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

时间:2017-10-11 19:54:35

标签: java android firebase google-cloud-firestore

据我所知 - 为了检查是否存在int(-32768<=i<=32767),我应该使用document函数并查看是否存在。

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

我试图更新一个空的document,但我收到一条错误消息,说该文档不存在,但我认为这可能不是检查此内容的成功方法。

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

有几种方法可以将数据写入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());

答案 2 :(得分:0)

我们可以使用 update 并将掩码参数设置为 true 像这样:-

firestore.updateDocument("GFrom/"+data.email,data, true);

答案 3 :(得分:0)

尝试更新不存在的文档的最简单方法是:

try {
  await db.collection('cities').doc('BJ').update('key', 'value')
} catch (error) {
  // document not exists, do nothing  
}