带时间戳的Firestore查询

时间:2020-03-25 11:21:13

标签: javascript firebase google-cloud-firestore

如果它是文本字段,我可以使用where条件获取数据,但是当我尝试对时间戳字段和日期进行相同操作时,则无法正常工作。

这是我的代码:

home.ts

firebase.firestore().collection("cities").where("timestamp", ">", "3/24/2020")
    .onSnapshot(function(querySnapshot) {
        var cities = [];
        querySnapshot.forEach(function(doc) {
            cities.push(doc.data().name);
        });
        console.log("Timestamp greather than 3/24/2020 -- ", cities.join(", "));
    });

一切都可以在firebase.firestore().collection("cities").where("state", "==", "CA")上正常运行,但不能在date上正常运行。

火库截图:

enter image description here

注意:JLD文档应在控制台中返回,因为其timestamp值大于3/24/2020

编辑1

按照@alex的指导,我现在正在这样做

let start = new Date('2020-03-25'); firebase.firestore().collection("cities").where("timestamp", ">", start)

但是当我使用2020-03-25时它包括>的数据,为什么?

1 个答案:

答案 0 :(得分:3)

我正在尝试对时间戳字段和日期进行同样的操作。

它不起作用,因为您正在向.where("timestamp", ">", "3/24/2020")传递一个不正确的字符串,因为您的数据库中的timestamp属性包含一个Date对象,而不是字符串。为了解决这个问题,不要将日期作为字符串(“ 3/24/2020”)传递,而是将其作为Date对象传递,一切都会正常进行。

let timestamp = new Date('2020-03-25');

然后使用:

firebase.firestore().collection("cities").where("timestamp", ">", timestamp);