簡體   English   中英

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 庫使您的代碼更易於閱讀/維護。 這個庫也在 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
});

如果您正在尋找按“今天創建”過濾的結果,您可以這樣做:

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({...});

當然,如果您正在尋找比“今天”更長的時間跨度,您會選擇 Timothy 的答案。

此代碼已在使用 Momentjs 1.7.2 的 Parse Cloud Code 中進行測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM