Firestore - 检查正在更新的文档是否存在
Firestore - Check if the document which is being updated exists
据我所知 - 为了检查 document
是否存在,我应该使用 get
函数看看它是否存在。
我的问题是关于更新时检查 - 是否可能?(考虑到 document
可能会在更新发生时消失)。
我试图更新一个空的 document
,但我收到一条错误消息,指出该文档不存在,但我认为这可能不是检查它的成功方法。
如果您只想在文档存在时执行更新,那么使用 update
就是正确的选择。您观察到的行为是您可以信赖的行为。
我们专门对此进行了设计,以便可以执行文档的部分更新,而不会创建您的代码无法处理的不完整文档。
有几种方法可以将数据写入 Cloud Firestore:
- update() - 更改已存在文档的字段。如果文档不存在则失败。
- set() - 覆盖文档中的数据,如果文档不存在则创建文档。如果只想部分更新文档,请使用
SetOptions.merge()
.
- create() - 仅在服务器端 SDK 中可用,类似于
set()
但如果文档已存在则失败。
所以您只需要针对您的用例使用正确的操作。如果你想在不知道它是否存在的情况下更新文档,你想使用 set()
和 merge()
选项,如下所示(此示例适用于 Java):
// Update one field, creating the document if it does not already exist.
Map<String, Object> data = new HashMap<>();
data.put("capital", true);
db.collection("cities").document("BJ")
.set(data, SetOptions.merge());
我们可以进行更新并将掩码参数设置为 true
像这样:-
firestore.updateDocument("GFrom/"+data.email,data, true);
尝试更新不存在的文档的最简单方法是:
try {
await db.collection('cities').doc('BJ').update('key', 'value')
} catch (error) {
// document not exists, do nothing
}
我认为在这种情况下,set() 和 merge: true 是最好的选择。
使用颤振
firestoreInstance.collection("users").doc(firebaseUser.uid).set(
{
"username" : "userX",
},SetOptions(merge: true))
据我所知 - 为了检查 document
是否存在,我应该使用 get
函数看看它是否存在。
我的问题是关于更新时检查 - 是否可能?(考虑到 document
可能会在更新发生时消失)。
我试图更新一个空的 document
,但我收到一条错误消息,指出该文档不存在,但我认为这可能不是检查它的成功方法。
如果您只想在文档存在时执行更新,那么使用 update
就是正确的选择。您观察到的行为是您可以信赖的行为。
我们专门对此进行了设计,以便可以执行文档的部分更新,而不会创建您的代码无法处理的不完整文档。
有几种方法可以将数据写入 Cloud Firestore:
- update() - 更改已存在文档的字段。如果文档不存在则失败。
- set() - 覆盖文档中的数据,如果文档不存在则创建文档。如果只想部分更新文档,请使用
SetOptions.merge()
. - create() - 仅在服务器端 SDK 中可用,类似于
set()
但如果文档已存在则失败。
所以您只需要针对您的用例使用正确的操作。如果你想在不知道它是否存在的情况下更新文档,你想使用 set()
和 merge()
选项,如下所示(此示例适用于 Java):
// Update one field, creating the document if it does not already exist.
Map<String, Object> data = new HashMap<>();
data.put("capital", true);
db.collection("cities").document("BJ")
.set(data, SetOptions.merge());
我们可以进行更新并将掩码参数设置为 true 像这样:-
firestore.updateDocument("GFrom/"+data.email,data, true);
尝试更新不存在的文档的最简单方法是:
try {
await db.collection('cities').doc('BJ').update('key', 'value')
} catch (error) {
// document not exists, do nothing
}
我认为在这种情况下,set() 和 merge: true 是最好的选择。 使用颤振
firestoreInstance.collection("users").doc(firebaseUser.uid).set(
{
"username" : "userX",
},SetOptions(merge: true))