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

标签 javascript firebase firebase-realtime-database

我想在下面的代码中更新我的显示名称。如何更新 displayName ?

我的数据库结构是:

-用户
-KuanJA9egwmPsJCxXpv

displayName:"测试培训师"

电子邮件:“test@gmail.com”

uid:“jRXMsNZHR2exqifnR2rXcceEMxF2”

最佳答案

如果要更新此用户的 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 下。对于这种类型的结构,我们通常建议您将每个用户存储在其唯一 ID 下:
-Users
      jRXMsNZHR2exqifnR2rXcceEMxF2
         displayName:"Test Trainer"    
         email:"test@gmail.com"
使用这样的结构,您消除了将同一用户存储两次的任何机会。此外,您现在无需查询即可更新用户的显示名称:
var currentUser = firebase.auth().currentUser;
db.ref("-Users/"+currentUser.uid).update({ displayName: "New trainer" });

关于javascript - Firebase DB - 如何更新 Firebase 数据库中子项的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40589397/

相关文章:

Firebase 项目初始化错误 : Failed to list available Google Cloud Platform projects

firebase - Firebase中基于多个where子句的查询

swift - iOS 中的 Firebase 身份验证管理

java - 我的代码中的DataSnapshot会因为多线程而被覆盖吗

javascript - 检测 ReactJS 页面更改

javascript - 使用 remove 函数同时删除两个 li

javascript - 使用 jquery 随机化 div 显示和隐藏的顺序

android - 使用 Room 和 Firebase 链接多个 RxJava2 操作

android - 如何使用 kotlin 协程处理回调

javascript - 使用具有可信身份验证的 Tableau Javascript API 显示报告