// Get the current document, e.g. some user
const querySnapshot = await firebase
.firestore()
.collection('users')
.doc(docId)
.get()
// Get the data, e.g. user data
let userData = querySnapshot.doc.data()
// Some business logic
...
if (condition) {
// update document
await firebase
.firestore()
.collection('users')
.doc(docId)
.update({phone: someNumber})
// Update your current data
userData.phone = someNumber
}
5条答案
按热度按时间jrcvhitl1#
正如您可能在Node.js(和Javascript)SDK的文档中看到的那样,无论是DocumentReference的方法还是CollectionReference的方法,这都是不可能的。
更准确地说,DocumentReference的
set()
和update()
方法都返回包含void
的Promise,而CollectionReference的add()
方法返回包含DocumentReference的Promise.旁注(与下面Darrinm的回答一致):值得注意的是,使用Firestore REST API时,当您创建文档时,您会返回(即通过API端点响应)一个
Document
对象。tnkciper2#
当您将文档添加到Cloud Firestore时,服务器可能会影响存储的数据。这可能会发生以下几种情况:
由于服务器会影响
Document
的内容,客户机不能简单地将已有的数据作为新文档返回,如果只想在客户机中显示发送到服务器的数据,当然可以重用传递给setData(...)
/addDocument(data: ...)
的对象。yhived7q3#
这似乎是Firestore Javascript API的一个任意限制。Firestore REST API在同一次调用中返回更新后的文档。
https://firebase.google.com/docs/firestore/reference/rest/v1beta1/projects.databases.documents/patch
kiz8lqtg4#
我也在尝试相同的方法,但是,我注意到我的代码中已经有了数据。所以,我决定更新我的当前对象,而不是取回文档。如下所示:
它节省了一个网络呼叫,并完成了我们的意图。
此外,如果打算创建一个新文档,然后将其用作引用,则可以将新创建的文档的id存储在一个变量中:
希望这有帮助!
doinxwow5#
我这样做是为了获取创建的新文档的ID,然后在其他地方使用它。
在这里我得到了ID:
希望能有所帮助。