Firestore 更新只有一个字段

7 浏览
0 Comments

Firestore 更新只有一个字段

我有一个数据库。顺序是:集合 - 文档 - 哈希映射。例如:\nusers - 集合的名称\nusers.uid - 文档的名称\n哈希映射 - 文档包含许多哈希映射的用户数据\n哈希映射\n哈希映射\n等等\n哈希映射:用户名是键,电话、位置等是值。我只需要更新一个用户名的一个字段(位置),但是不知道该如何做?\n我尝试了以下方式(更新Alex的电话号码):\n

User user = new User();
user.setPhone(131902331);
Map userMap = new HashMap<>();
userMap.put("alex",user);
          mFirebaseFirestore
                  .collection("users")
                  .document(mFirebaseAuth.getUid())
                  .set(userMap, SetOptions.merge())
                  .addOnSuccessListener(new OnSuccessListener() {
                      @Override
                      public void onSuccess(Void aVoid) {
                          LOG.info("Success");
                      }
                  })
                  .addOnFailureListener(new OnFailureListener() {
                      @Override
                      public void onFailure(@NonNull Exception e) {
                          LOG.error("Failure "+e.toString());
                      }
                  });

\n我做错了什么?

0
0 Comments

Firestore update only one field的问题出现的原因是使用firebase-firestore-ktx库的更新语法发生了变化。根据MrAleister的回答中的链接所示的文档,可以看到更新操作的语法已经改变了。

解决这个问题的方法是使用新的更新语法。在上述代码中,可以看到使用了`update`方法来更新文档中的字段。通过传递一个包含要更新字段的映射(map),可以只更新指定的字段。在这个例子中,使用了`mapOf`方法来创建一个映射,其中包含要更新的字段和对应的新值。

在这个例子中,要更新的字段是`age`和`favorites.color`。`age`字段的新值为13,`favorites.color`字段的新值为"Red"。通过将这个映射传递给`update`方法,可以实现只更新指定字段的操作。

需要注意的是,这个解决方法适用于使用firebase-firestore-ktx库的版本。对于其他版本的库,可能需要使用不同的语法来实现只更新一个字段的操作。

总结起来,解决Firestore只更新一个字段的问题的方法是使用新的更新语法,通过传递一个包含要更新字段和对应新值的映射来实现。

0
0 Comments

问题的原因是在使用Firestore的update方法时,传入了一个HashMap对象,而该HashMap的值包含了RealmObject对象。由于Firestore需要的数据结构不同于Firebase,因此在使用update方法时出现了错误。

解决方法是创建一个新的数据结构,该数据结构适用于Firestore的update方法。这个新的数据结构可能会有一些冗余,但可以确保update方法正常工作。

具体来说,可以通过以下步骤解决问题:

1. 创建一个新的数据结构,该数据结构中的值不包含RealmObject对象。

2. 使用set方法将新的数据结构传入Firestore的document中,以替换原有的数据。

3. 在需要更新字段的地方,使用update方法,传入新的数据结构。

以下是示例代码:

mFirebaseFirestore
  .collection("users")
  .document(mFirebaseAuth.getUid())
  .set(newUserMap);
mFirebaseFirestore
  .collection("users")
  .document(mFirebaseAuth.getUid())
  .update(userMap);

需要注意的是,update方法只会更新指定字段的值,而不会替换整个文档的内容。

希望以上解决方法能帮助到你解决Firestore update只更新一个字段的问题。如果你还有其他关于Firestore和RealmObject的问题,可以在相关的Stack Overflow页面中寻找答案。

0
0 Comments

问题出现的原因:在Firestore中更新一个字段时,可能会遇到无法更新该字段的问题。

解决方法:使用点表示法(dot notation)来更新嵌套对象中的字段。

在Java中使用该语法时,需要创建一个包含要更新的数据的Map对象,并将其传递给`update`方法。

以下是代码示例:

Map data = new HashMap<>();
data.put("age", 13);
data.put("favorites.color", "Red");
db.collection("users")
  .document("frank")
  .update(data);

这样就可以更新`users`集合中名为`frank`的文档中的`age`字段和`favorites`对象中的`color`字段。

需要注意的是,如果`favorites`对象不存在,则会创建一个新的字段,其键为"favorites.color";如果`favorites`对象已存在,则会更新该对象中的`color`字段。

0