我正在尝试在Firestore中查询时间戳。

7 浏览
0 Comments

我正在尝试在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

});

0
0 Comments

问题原因:您当前正在传递一个字符串值给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在某个范围内的文档,您可以使用>=<=进行查询。

0