在时间戳字段上查询Firestore数据库

时间:2018-11-28 16:38:54

标签: firebase google-cloud-firestore

我在使用Firestore(和编程)时还比较陌生,无法在线找到解决我问题的方法。

试图查询现有集合中的文档。所有文档都有一个时间戳字段。

当我尝试立即查询所有文档“>”或“ <”时,查询工作正常。 7天前,当我尝试查询“>”或“ <”时,查询不返回任何内容。我确定我可能只是想念一些小东西。感谢您的帮助!

这些预期的退货文件:

var today = new Date();
db.collection("****").where('display', '==', true).where('createdAt', '>', today).get().then(function(querySnapshot) {

var today = new Date();
db.collection("****").where('display', '==', true).where('createdAt', '<', today).get().then(function(querySnapshot) {

这些都不返回任何内容:

var today = new Date()-604800000;
db.collection("****").where('display', '==', true).where('createdAt', '>', today).get().then(function(querySnapshot) {

var today = new Date();
db.collection("****").where('display', '==', true).where('createdAt', '>', today-604800000).get().then(function(querySnapshot) {

只是为了实现它

var today = new Date()-1;
db.collection("****").where('display', '==', true).where('createdAt', '>', today).get().then(function(querySnapshot) {

我已经看到其他人要求查看Firestore中的字段,所以下面是一张图片: sorry it's a link

请告诉我是否还有其他可能有用的信息。谢谢!

编辑以显示下一个尝试:

var config = {****};
firebase.initializeApp(config);

const db = firebase.firestore();
const settings = {/* your settings... */ timestampsInSnapshots: true};
db.settings(settings);

var today = new Date();
var yesterday = date.setDate(today.getDate() - 1);
db.collection("****")
    .where('display', '==', true)
    .where('createdAt', '>', yesterday)
    .get()
    .then(function(querySnapshot) {console.log(createdAt)});

1 个答案:

答案 0 :(得分:4)

好的。因此,我从一位很有帮助的Google开发人员那里得到了一些帮助。

这最终成功了。

var beginningDate = Date.now() - 604800000;
var beginningDateObject = new Date(beginningDate);

db.collection("****")
    .where('display', '==', true)
    .where('createdAt', '>', beginningDateObject)
    .get()
    .then(function(querySnapshot) {console.log(/* ... */)});