2014-10-03 19 views
1

我試圖做一個解析查詢,並通過JavaScript API在查詢上設置日期約束。在解析查詢上設置日期約束的問題

這是我正在查詢的Result表/對象(上parse.com): My "table": <code>Result</code>

Column     Data type
 
objectId    String 
createdDate    Date 
updatedAt    Date 
obtainedPonts   Number 
relatedDriver   Relation 
relatedTest    Relation 
ACL      ACL 
resultCeasesToBeValid Date 
didPassTheTest   Boolean 

resultCeasesToBeValid從一些示例數據:

Example data from <code>resultCeasesToBeValid</code>

這是我的目標:我要把曲現在給我一套Result < resultCeasesToBeValid

我的問題是,我總是收到一個Result數組與.length = 0當我試圖把日期約束的查詢。

function IsApprovedAndHasValidResults(currentDriverObjectId) { 

    var Driver = Parse.Object.extend('Driver'); 
    var currentDriverObject = new Driver(); 
    currentDriverObject.id = currentDriverObjectId; 

    var queryResult = new Parse.Query(Result); 

    //set the constraints 
    queryResult.equalTo('relatedDriver', currentDriverObject); //this constraint works as expected 

    /**************************************************************************************************** 
    *var today = new Date();   // "today" is as time of writing 3 oct 2014      * 
    *                         * 
    * //will give me a parseResults[] of .length=0:             * 
    *queryResult.lessThan('resultCeasesToBeValid', today);            * 
    *                         * 
    * //will give me a parseResults[] of .length=0:              * 
    *queryResult.lessThan('resultCeasesToBeValid', { "__type": "Date", "iso": today.toISOString() }); * 
    *                         * 
    *****************************************************************************************************/ 

    queryResult.find({ 
     success: function (parseResults) { 
      // results is an array of Parse.Object. 
     /*when the code gets here parseResults array.lenght equals 0*/ 
     }, 

     error: function (error) { 
      // error is an instance of Parse.Error. 
     /*will never be here*/ 
     } 
    }); 
} 

其他開發商似乎有同樣的問題,user Abhishek suspects a bug。根據Héctor Ramos (Parse)很久以前:「在處理JavaScript中的日期時,您應該使用Date對象,而不是字符串。」顯然這是行不通的!

我的代碼有問題嗎?

回答

1

解決方法:

queryResult._where.resultCeasesToBeValid = {'$lt' :{ "__type": "Date", "iso": today}}}; 

_where是「私有財產」,雖然我不會依賴於它太多。解析應該解決這個問題。

如果你能[更改列類型],我建議存儲日期作爲UNIX時間戳來避免這種問題:

var timestamp = +new Date(); 
result.save({'resultCeasesToBeValid': timestamp}); 
+0

太好了!感謝提示,我會嘗試時間戳! – 2014-10-03 14:04:11

+0

就是這樣!我相信日期限制錯誤依然存在(在報告發布兩年多後)! 感謝您的好解決方法!我改爲[時間戳]。 – 2014-10-03 20:58:13