我正在尝试在Firestore中查询时间戳。
我正在尝试在Firestore中查询时间戳。
这是我的代码。现在,我只是想确保我知道如何格式化我的日期来获取它。我尝试了月-日-年的格式,但似乎不起作用。我能够获取到Firestore传递的对象,它看起来是这样的:
{
Cust_Notes: "Quisque malesuada sagittis posuere. Vestibulum leo enim, aliquam ut fermentum id,
vestibulum eu lacus. Maecenas ornare ultrices dui nec facilisis. Vivamus convallis eros at
Date_of_Appt: Timestamp
nanoseconds: 0
seconds: 1577336400
}
firebase
.firestore()
.collection("appointments")
.where("UserId", "==", user.uid)
.where("Date_of_Appt", "==", "1577336400")
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
// 对于查询到的文档快照,doc.data() 永远不会是未定义的
console.log(doc.id, " => ", doc.data());
});
})
.catch(function(error) {
console.log("获取文档时出错:", error);
});
this.setState({
uid: user.uid
});
问题原因:您当前正在传递一个字符串值给Date_of_Appt
。由于您在数据库中存储的是Timestamp
对象,与字符串进行比较将无法匹配文档。
解决方法:传递一个JavaScript Date
对象或Firestore Timestamp
对象。由于您似乎将时间作为以秒为单位的时间间隔,最简单的方法是使用如下的时间戳:
firebase .firestore() .collection("appointments") .where("UserId", "==", user.uid) .where("Date_of_Appt", "==", new firebase.firestore.Timestamp(1577336400,0)) .get()
上述代码将只返回与您传递的时间戳值完全匹配的文档。如果您想返回Date_of_Appt
在某个范围内的文档,您可以使用>=
和<=
进行查询。