【发布时间】:2020-11-14 12:51:51
【问题描述】:
我想用我拥有的 User 对象更新一个文档,但如果该文档不存在,我不想创建它,因此我不能使用“DocumentReference.set”使用“SetOptions.Merge()”(据我了解)。
但是,根据这篇文章 (Difference between set with {merge: true} and update),“更新”实际上是我需要的命令。我的问题是,似乎 update 不接受 Java 对象。
我不想自己检查文档是否存在,因为这会导致不必要的读取。
有没有办法解决这个问题?
这是我的代码(为简单起见,我删除了成功和失败监听器):
public void saveUser(User user)
{
CollectionReference collection = db.collection("users");
String id = user.getId();
if (id.equals(""))
{
collection.add(user);
}
else
{
// I need to ensure that the ID variable for my user corresponds
// with an existing ID, as I do not want a new ID to be generated by
// my Java code (all IDs should be generated by Firestore auto-ID)
collection.document(ID).set(user);
}
}
【问题讨论】:
-
请编辑问题以显示您正在使用的代码以及您要更新的文档数据。很难理解你想要做什么。
-
@DougStevenson 按要求完成
-
听起来你有两个不同的问题。一个是如果你手头有一个对象,如何更新。另一个是如果文档不存在该怎么办。我将在我的回答中解决这两个问题。今后,请确保您的问题一次解决一个问题。
标签: java android firebase google-cloud-firestore