关于Firestore SnapshotOptions中serverTimestamps设为'previous'时首次写入无历史值的返回值问询
Firestore
serverTimestamps: 'previous'无历史值时的返回结果 如果你设置了SnapshotOptions = { serverTimestamps: 'previous' },但当前场景下没有历史值(比如首次向文档写入服务器时间戳的时候),此时处于pending状态的服务器时间戳会返回**null**,和默认的'none'配置表现一致。
为什么会这样?
结合你给出的SnapshotOptions接口注释来看:
指定'previous'时,pending状态的时间戳会被忽略,转而返回其历史值。
如果省略或设置为'none',默认会返回null,直到服务器值可用。
'previous'的设计逻辑是优先复用已存在的历史时间戳,但如果根本没有历史值可以 fallback,Firestore就没有备选值了,只能退回到默认行为——返回null,直到服务器端的最终时间戳同步完成。
实际场景示例
举个简单的例子:你第一次创建一个文档,里面包含服务器时间戳字段:
// 首次写入文档,包含pending的服务器时间戳 db.collection('posts').add({ publishedAt: firebase.firestore.FieldValue.serverTimestamp() });
当你用serverTimestamps: 'previous'配置监听这个文档的快照时,因为这是首次写入,没有任何历史值,所以publishedAt在pending阶段会返回null,等服务器确认时间戳后,才会更新为最终的服务器时间值。
内容的提问来源于stack exchange,提问作者Acid Coder
相关产品推荐
相关产品推荐

