Firebase数据库 - 如何在Firebase数据库中更新子项的特定值

时间:2016-11-14 13:00:59

标签: javascript firebase firebase-realtime-database

我想在下面的代码中更新我的显示名称。如何更新我的displayName。 我的数据库结构如下:

-Users
      -KUanJA9egwmPsJCxXpv

         displayName:"Test Trainer"

         email:"test@gmail.com"

         uid: "jRXMsNZHR2exqifnR2rXcceEMxF2"

3 个答案:

答案 0 :(得分:60)

如果要更新此用户的displayName:

var db = firebase.database();
db.ref("-Users/-KUanJA9egwmPsJCxXpv/displayName").set("New trainer");

或者,您也可以使用:

db.ref("-Users/-KUanJA9egwmPsJCxXpv").update({ displayName: "New trainer" });

但很可能你不知道用户的ID,在这种情况下你需要先查看一下:

var query db.ref("-Users").orderByChild("uid").equalTo("jRXMsNZHR2exqifnR2rXcceEMxF2");
query.once("child_added", function(snapshot) {
  snapshot.ref.update({ displayName: "New trainer" })
});

关于您的数据结构的最后一点评论:您似乎在存储用户配置文件,但您将其存储在推送ID下。对于这种类型的结构,我们通常建议您将每个用户存储在其UID下:

-Users
      jRXMsNZHR2exqifnR2rXcceEMxF2
         displayName:"Test Trainer"    
         email:"test@gmail.com"

使用这样的结构,您可以删除任何两次存储同一用户的机会。此外,您现在可以更新用户的显示名称而无需查询:

var currentUser = firebase.auth().currentUser;
db.ref("-Users/"+currentUser.uid).update({ displayName: "New trainer" });

答案 1 :(得分:0)

如何检查它是否已更新?

答案: https://stackoverflow.com/a/44123067/3156040

我也在寻找那个。

答案 2 :(得分:0)

使用此代码更新数据库的任何子项

-Users
      -KUanJA9egwmPsJCxXpv

         displayName:"Test Trainer"

         email:"test@gmail.com"

         uid: "jRXMsNZHR2exqifnR2rXcceEMxF2"

Database reference = FirebaseDatabase.getInstance().getReference("Users").child("KUanJA9egwmPsJCxXpv");
                Map<String, Object> hashMap = new HashMap<>();
                hashMap.put("email", newValue);
                reference.updateChildren(hashMap);