【发布时间】:2018-12-25 21:44:03
【问题描述】:
当我使用 .get() 获取 FireStore 文档时,我的时间字段返回此值:createdAt: "2018-12-25T01:04:05.189Z" 但当我使用 onSnapshot 时,时间字段返回不同的值:
1) 使用onSnapshot:
componentDidMount() {
this.unsubscribe = this.ref.doc('HCNFO3ZKlFNKK71JMzo8').onSnapshot(this.onCollectionUpdate)
}
componentWillUnmount() {
this.unsubscribe();
}
onCollectionUpdate = (querySnapshot) => {
this.setState({
theLocation: querySnapshot.data()
})
}
返回:mylocations: {
createdAt: Timestamp {seconds: 1545723905, nanoseconds: 177000000}
}
2)在云函数上使用.get()
.then(() => {
return firebaseAdminSDK.firestore().collection('locations').doc('HCNFO3ZKlFNKK71JMzo8').get()
})
返回:mylocations: {
createdAt: "2018-12-25T07:45:05.177Z"
}
保存位置时,我在云功能上使用了data.createdAt = FieldValue.serverTimestamp();
知道发生了什么吗?
【问题讨论】:
-
请编辑问题以显示两种情况下的代码。
-
@DougStevenson 谢谢,我添加了更多细节
-
我认为您的意思是云功能中的 admin sdk 和客户端应用程序中的 javascript sdk 之间的区别,而不是
get和onSanpshot之间的区别。我认为在您的客户端应用程序中使用 get 与 onSanpshout 的时间戳结果相同。 -
我没有看到您实际打印或尝试处理值的代码。请不要截图 - 它们没有帮助。将文本直接复制到问题中。
-
虽然这些值是相同的,只是表示形式不同。这里真的有问题吗?
1545723905以秒为单位,因为 Epoch 是December 25, 2018 7:45:05,这是另一个方法返回的值,所以它们都给出相同的值
标签: firebase google-cloud-firestore