parse.com - 我如何仅使用 javascript 创建按日期等于 createdAt 的查询
parse.com - how i can create query equal createdAt by date only with javascript
我想按 "createdAt" 字段查找数据,但我只需要搜索日期(没有时间)。
var d = new Date();
var query = new Parse.Query("TableName");
query.equalTo("createdAt", d);
生成两个日期基本上需要做的事情:
date
在 0:0:0 时间
date+1day
在 0:0:0 时间
然后搜索:
query.greaterThanOrEqualTo('createdAt', date);
query.lessThan('createdAt', datePlusOne);
这有效地为您提供了 dateT0:0:0 - dateT23:59:59.99999 的范围,但以安全的方式
如果要使用纯JavaScript:
// assuming date is the date/time to start from
date.setHours(0, 0, 0, 0);
// hours/min/sec/ms cleared
var datePlusOne = new Date(date);
datePlusOne.setDate(datePlusOne.getDate() + 1);
您还可以使用 moment library 使您的代码更易于 read/maintain。这个库也在 parse.com 中用于服务器端,虽然它是一个旧版本。
m1 = new moment(date);
m1.startOf('day');
m2 = new moment(m1);
m2.add(1, 'day');
// convert moment back to JavaScript dates
date = m1.toDate();
var datePlusOne = m2.toDate();
使用力矩的完整解决方案:
var d = new Date();
var query = new Parse.Query("TableName");
var start = new moment(d);
start.startOf('day');
// from the start of the date (inclusive)
query.greaterThanOrEqualTo('createdAt', start.toDate());
var finish = new moment(start);
finish.add(1, 'day');
// till the start of tomorrow (non-inclusive)
query.lessThan('createdAt', finish.toDate());
query.find.then(function(results) {
// use results
});
如果您要查找按 "created today" 过滤的结果,您可以这样做:
var moment = require("moment");
var start = moment().sod() //Start of day
var end = moment().eod() //End of day
var query = new Parse.Query("myClass")
query.greaterThanOrEqualTo("createdAt", start.format());
query.lessThan("createdAt", end.format());
query.find({...});
当然,如果您正在寻找比 "today" 更长的时间跨度,您会选择 Timothy 的答案。
此代码已在 Parse Cloud Code with Momentjs 1.7.2 中测试
我想按 "createdAt" 字段查找数据,但我只需要搜索日期(没有时间)。
var d = new Date();
var query = new Parse.Query("TableName");
query.equalTo("createdAt", d);
生成两个日期基本上需要做的事情:
date
在 0:0:0 时间date+1day
在 0:0:0 时间
然后搜索:
query.greaterThanOrEqualTo('createdAt', date);
query.lessThan('createdAt', datePlusOne);
这有效地为您提供了 dateT0:0:0 - dateT23:59:59.99999 的范围,但以安全的方式
如果要使用纯JavaScript:
// assuming date is the date/time to start from
date.setHours(0, 0, 0, 0);
// hours/min/sec/ms cleared
var datePlusOne = new Date(date);
datePlusOne.setDate(datePlusOne.getDate() + 1);
您还可以使用 moment library 使您的代码更易于 read/maintain。这个库也在 parse.com 中用于服务器端,虽然它是一个旧版本。
m1 = new moment(date);
m1.startOf('day');
m2 = new moment(m1);
m2.add(1, 'day');
// convert moment back to JavaScript dates
date = m1.toDate();
var datePlusOne = m2.toDate();
使用力矩的完整解决方案:
var d = new Date();
var query = new Parse.Query("TableName");
var start = new moment(d);
start.startOf('day');
// from the start of the date (inclusive)
query.greaterThanOrEqualTo('createdAt', start.toDate());
var finish = new moment(start);
finish.add(1, 'day');
// till the start of tomorrow (non-inclusive)
query.lessThan('createdAt', finish.toDate());
query.find.then(function(results) {
// use results
});
如果您要查找按 "created today" 过滤的结果,您可以这样做:
var moment = require("moment");
var start = moment().sod() //Start of day
var end = moment().eod() //End of day
var query = new Parse.Query("myClass")
query.greaterThanOrEqualTo("createdAt", start.format());
query.lessThan("createdAt", end.format());
query.find({...});
当然,如果您正在寻找比 "today" 更长的时间跨度,您会选择 Timothy 的答案。
此代码已在 Parse Cloud Code with Momentjs 1.7.2 中测试