过滤自己的日期字段无效 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!!!");
}
});
});
希望对大家有帮助!!!
在我自己的日期字段上进行筛选时,我没有得到预期的记录,而在通过解析默认日期字段进行筛选时,我确实得到了记录。
下面的代码应该 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!!!");
}
});
});
希望对大家有帮助!!!