Firestore:在添加/更新文档后无需额外的网络调用即可取回文档

Firestore: get document back after adding it / updating it without additional network calls

是否可以在添加/更新文档后取回文档,而无需使用 Firestore 进行额外的网络调用,类似于 MongoDB?

我觉得先调用添加/更新文档然后再调用一次来获取它很愚蠢。

正如您可能在 Node.js(和 Javascript)SDK 的文档中看到的那样,这是不可能的,使用 DocumentReference nor with the one of a CollectionReference.[=18 的方法也是不可能的=]

更准确地说,set() and update() methods of a DocumentReference both return a Promise containing void, while the CollectionReference's add() method returns a Promise containing a DocumentReference


旁注(与下面 darrinm 的回答一致):值得注意的是,对于 Firestore REST API, when you create a document, you get back (i.e. through the API endpoint response) a Document 对象。

将文档添加到 Cloud Firestore 时,服务器会影响存储的数据。发生这种情况的几种方式:

  • 如果您的数据包含服务器端时间戳的标记,服务器会将该标记扩展为实际时间戳。
  • 根据您的服务器端安全规则,您的数据数据不被允许,服务器将拒绝写入操作。

由于服务器会影响 Document 的内容,客户端不能简单地 return 它已经拥有的数据作为新文档。如果您只想在客户端显示发送到服务器的数据,您当然可以通过简单地重用传递给 setData(...)/addDocument(data: ...).

的对象来实现

这似乎是 Firestore Javascript API 的任意限制。 Firestore REST API returns 在同一调用上更新文档。

https://firebase.google.com/docs/firestore/reference/rest/v1beta1/projects.databases.documents/patch