Firestore - 检查正在更新的文档是否存在

据我所知 - 为了检查是否存在,我应该使用该函数,看看它是否存在。documentget

我的问题是关于在更新时检查 - 可能吗?(考虑到更新发生时可能会消失)。document

我试图更新一个空的,我得到一个错误,说文档不存在,但我认为这可能不是检查这个的成功方法。document


答案 1

有几种方法可以将数据写入 Cloud Firestore:

  • update() - 更改已存在的文档上的字段。如果文档不存在,则失败。
  • set() - 覆盖文档中的数据,如果文档尚不存在,则创建该文档。如果只想部分更新文档,请使用 。SetOptions.merge()
  • create() - 仅在服务器端 SDK 中可用,类似于文档已存在但失败。set()

因此,您只需要为您的用例使用正确的操作即可。如果要在不知道文档是否存在的情况下更新文档,则需要使用带有类似如下选项的 a(此示例适用于 Java):set()merge()

// 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());

答案 2

如果您只想在文档存在时执行更新,则使用正是要执行的操作。您观察到的行为是您可以依靠的行为。update

我们专门对此进行了设计,以便可以对文档执行部分更新,而不会创建您的代码不准备处理的不完整文档。


推荐