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

Tal*_*rda 3 java android firebase google-cloud-firestore

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

我的问题是关于更新时的检查-是否可以?(考虑到document更新时可能消失了)。

我试图更新一个空document文件,但出现一个错误,提示该文档不存在,但是我认为这可能不是检查此文件的成功方法。

Gil*_*ert 9

如果您只想在文档存在的情况下执行更新,则使用update正是要做的事情。您观察到的行为是您可以信赖的行为。

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


Sam*_*ern 7

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

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

因此,您只需要针对用例使用正确的操作。如果要在不知道文档是否存在的情况下更新文档,则想将a 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());
Run Code Online (Sandbox Code Playgroud)