【问题标题】:react native firebase offline write + update not sync when online反应本机firebase离线写入+更新在线时不同步
【发布时间】:2026-01-29 12:50:01
【问题描述】:

我在一个裸露的 react-native 项目中工作,我必须使用 firebase 持久性。 我使用 react-native-firebase 包来完成我的所有请求。

当我使用 react-native-firebase/firestore 离线写入然后上线时,它会与 backOffice 同步。

firestore().collection(col).add(data)

当我使用 react-native-firebase/firestore 更新数据然后上线时,它会与 backOffice 同步。

firestore().collection(col).doc(id).update(data)

但是当我离线写入然后更新这个新数据(离线)时,当我上线时数据消失,就像未同步的待处理请求一样。

知道为什么吗?

谢谢

【问题讨论】:

  • 在 Firestore 中,当您多次更新相同的文档时,只有最后一次更新会与数据库同步。所以我猜这里是你在最后一次更新中用一些空数据更新了你的文档,而那个是同步到数据库的。 文档是否存在但数据为空或根本不存在?
  • 是的,文件存在,谢谢!问题是带有 serverTimestamp() 值的 à 字段在返回在线时设置为 null(逻辑)

标签: javascript firebase react-native google-cloud-firestore react-native-firebase


【解决方案1】:

serverTimestamp 是一个与 firestore 相关的相当复杂的话题,但重点是 serverTimestamp 值永远不会在客户端设置,它始终为 null 但它会被设置仅在服务器上。您可以通过以下方式获取此值:

firebase.firestore.FieldValue.serverTimestamp()

设置它的代码应该是这样的:

const firestore = firebase.firestore()
const ref = firestore.collection('messages').doc('foo')
ref.set({
    createdAt: firebase.firestore.FieldValue.serverTimestamp()
})

要对此有更深入的了解,请查看 firebase 专家的 detailed article

【讨论】: