如果字段是文本类型,我可以使用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
却不行。
fire storage 的截图如下:
注意: 控制台应该返回 JLD
文档,因为它的 timestamp
值大于 3/24/2020
。
Edit 1
根据 @alex 的指引,我现在这样做:
let start = new Date('2020-03-25');
firebase.firestore().collection("cities").where("timestamp", ">", start)
但是我使用 >
时,它包括了 2020-03-25
的数据,为什么?
new Date('2020-03-25')
创建一个时间,时、分和秒的值为00
。由于你数据库中的时间设置为 下午4点,因此你得到了正确的结果。 - Alex Mamonew Date('2020-03-25')
我得到了一个记录,它是2020-03-25
,我该如何避免这种情况? - user2828442new Date('2020-03-25 00:00:00')
。由于数据库中的日期对象具有下午4点的时间,因此获得该结果是正常的,因为下午4点在“00:00:00”之后,对吧? - Alex Mamo