2017-10-11 132 views
1

据我所知 - 为了检查document是否存在,我应该使用get函数并查看它是否存在。Firestore - 检查正在更新的文档是否存在

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

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

回答

1

有几种方式将数据写入到云公司的FireStore:

  • 更新() - 变化领域上已经存在的文件。如果文档不存在,则失败。
  • 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()); 
+0

你能用Java写这个吗?实际上,我正在使用Firebase。 –

+0

@TalBarda完成。 –

+0

谢谢。我会问你在上面的答案下问了什么:我可以检测操作是否因文档不存在而失败吗? –

3

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

我们专门设计了这个功能,以便可以执行文档的部分更新,而无需创建不完整的文档,否则您的代码无法处理。

+0

所以我应该阅读onFailure处的消息,比检测是否因为文档不存在而发生?有没有一种很好的方法来检测更新是否因此而失败? –

+0

@TalBarda见下文。您应该使用适当的操作写入数据。 –

相关问题