过滤自己的日期字段无效 and/or 使用了错误的日期格式

Filter on own date fields no working and/or wrong date format used

在我自己的日期字段上进行筛选时,我没有得到预期的记录,而在通过解析默认日期字段进行筛选时,我确实得到了记录。

下面的代码应该 return 最后提供的 JSON 中的最后两条记录。

注意 createdAt 是默认的解析日期字段,而 startDate 是我自己的日期字段。

所以在过滤器中,您可以更改代码的工作部分和失败部分。

我认为这与提供给查询过滤功能的数据格式有关。虽然我做了很多测试,但我找不到我应该使用的正确格式

工作:

query.greaterThan("createdAt", date2.format("YYYY-MM-DDTHH:mm:ss.SSSZ"));

失败:

query.greaterThan("startDate", date2.format("YYYY-MM-DDTHH:mm:ss.SSSZ"));

使用的代码:

Parse.Cloud.define("dateChecks", function(request, response){
    var message;
    var date2 = momento('2014-12-20T00:00:00+00:00');
    console.log("date2: " + date2.format("YYYY-MM-DDTHH:mm:ss.SSSZ"));
    var query = new Parse.Query("myClass");
    query.greaterThan("createdAt", date2.format("YYYY-MM-DDTHH:mm:ss.SSSZ"));
    query.find({
        success: function(resultList) {
            for (var i = 0; i < resultList.length; ++i) {
                message = "\ncomments: " + resultList[i].get("comments") + " \tstartDate: " + resultList[i].get("startDate") + " \tcreatedAt: " + resultList[i].get("createdAt");
                console.log(message);
            }
            response.success(resultList);
            },
        error: function() {
                //response.error("Failured.  Error: " + error.code + " " + error.message);
                response.error("Things have gone wrong!!!");
        }
    });
});

JSON 使用:

    { "results": [
{
    "comments": "1",
    "createdAt": "2014-12-18T20:56:40.176Z",
    "startDate": {
        "__type": "Date",
        "iso": "2015-01-05T10:00:00.000Z"
    },
    "objectId": "juRygHvpw5",
    "updatedAt": "2015-01-05T21:11:31.463Z"
},
{
    "comments": "7",
    "createdAt": "2014-12-20T00:35:03.617Z",
    "startDate": {
        "__type": "Date",
        "iso": "2015-01-15T09:00:00.000Z"
    },
    "objectId": "vtlGCgZVZD",
    "updatedAt": "2015-01-05T20:53:09.327Z"
},
{
    "comments": "6",
    "createdAt": "2014-12-20T00:32:48.884Z",
    "startDate": {
        "__type": "Date",
        "iso": "2015-01-15T14:00:00.000Z"
    },
    "objectId": "JARVIQKFxq",
    "updatedAt": "2015-01-05T20:53:07.671Z"
}
] }

它的结果,至少从我的测试来看,在日期字段上过滤时你不能传递任何 momentjs 实例......它会像我的问题中描述的那样失败。

使用 Date 数据类型后一切正常。

基本上变化是:

var filterDate = new Date(date2.format("YYYY-MM-DDTHH:mm:ss.SSSZ"))
var query = new Parse.Query("myClass");
query.greaterThan("startDate", filterDate);

对我有用的完整代码是:

Parse.Cloud.define("dateChecks", function(request, response){
    var message;

    var date2 = momento('2015-01-15T00:00:00+00:00');
    console.log("date2: " + date2.format("YYYY-MM-DDTHH:mm:ss.SSSZ"));
    var filterDate = new Date(date2.format("YYYY-MM-DDTHH:mm:ss.SSSZ"))
    console.log("filterDate: " + filterDate);

    var query = new Parse.Query("myClass");
    query.greaterThan("startDate", filterDate);
    query.find({
        success: function(resultList) {
            for (var i = 0; i < resultList.length; ++i) {
                message = "\ncomments: " + resultList[i].get("comments") + " \tstartDate: " + resultList[i].get("inicioCita") + " \tcreatedAt: " + resultList[i].get("createdAt");
                console.log(message);
            }
            response.success(resultList);
        },
        error: function() {
            //response.error("Failured.  Error: " + error.code + " " + error.message);
            response.error("Things have gone wrong!!!");
        }
    });
});

希望对大家有帮助!!!