我在尝试使用DateTime对象查询文档时遇到问题
路径/ users / {userId} / payments / {paymentDoc}中的文档 我有这样的文档结构
Document data: {
banking: '',
isPaid: false,
endDate: Timestamp { _seconds: 1592179200, _nanoseconds: 0 },
startDate: Timestamp { _seconds: 1590969600, _nanoseconds: 0 }, **June 1, 2020 at 7:00:00 AM UTC+7**
totalIncome: 100
}
我尝试查询文档的位置
firstDayOfMonth = new Date(2020, 05, 01) **maybe wrong here?**
userPaymentRef = db.collection('users')
.doc(userId)
.collection('payments')
.where('startDate', '==', firstDayOfMonth)
.get()
.then(function (doc) {
if (doc.exists) {
console.log("Document data:", doc.data());
return true;
} else {
console.log("No such document!");
return false;
}
}).catch(function (error) {
console.log("Error getting document:", error);
});
但是在firebase函数中记录其所说的没有这样的文件!
我尝试记录存储的startDate的时间戳和要查询的日期的时间戳。一样,但是说“没有这样的文档”是我的查询错了吗?或我要查询的DateTime错误?
编辑: 功能日志
我存储的文档的时间戳和DateTime的时间戳匹配,但是找不到文档
答案 0 :(得分:1)
如果文档中有一个时间戳字段,则只能与其他Date或Timestamp对象完全匹配。精确到纳秒的精度必须匹配。同一天但一天中不同时间的两个时间戳不相等。
还请记住,时间戳记对象不对时区进行编码-它们始终使用UTC。如果使用Date对象,则必须使用与时间戳记完全相同的时间来创建它,以便获得相等匹配。未指定准确时间的日期对象将使用本地计算机的时间戳,这绝对不能保证与任何其他计算机上的一天中的时间相匹配。
最重要的是:如果要使两个时间戳相等,则它们都必须代表精确相同的时间(以纳秒为单位)。