【问题标题】:Flutter/Firebase : I want to update existing values, but new values are being createdFlutter/Firebase:我想更新现有值,但正在创建新值
【发布时间】:2021-06-24 05:10:00
【问题描述】:

我正在做一个颤振项目,这是我的代码:

    String vl = store.reference().child("Volunteers/Aadithya").push().key;
    vlRef = FirebaseDatabase.instance.reference().child("Volunteers/Aadithya");
    vlRef.child(vl).update({
      "Contributions": int.parse(count)+1,
    }).then((_) {
    }).catchError((onError) {
      Scaffold.of(context)
          .showSnackBar(SnackBar(content: Text(onError)));
    }); 

ContributionsAadithya 内部的一条数据记录。我需要单独更新它的值。但实际情况是,在 Aadithya 中创建了一个新的子记录,contributions 是它的数据类型

请帮忙:

【问题讨论】:

  • 你能分享一下你的数据库结构的截图吗?
  • 当然。我已经更新了
  • 嘿,我已经发布了答案。如果这对您有帮助,您可以通过单击对勾图标接受它,这样其他人就会知道它已解决,否则请随时提出进一步的问题。

标签: firebase flutter dart firebase-realtime-database


【解决方案1】:

如果要更新此用户的 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" });

【讨论】:

    【解决方案2】:

    您正在将其添加到具有随机 ID 的孩子。你不需要按键。试试这个:

    vlRef = FirebaseDatabase.instance.reference().child("Volunteers/Aadithya");
    vlRef.update({
      "Contributions": int.parse(count)+1,
    }).then((_) {
    
    }).catchError((onError) {
      Scaffold.of(context).showSnackBar(SnackBar(content: Text(onError)));
    }); 
    

    .child(vl) 表示您正在添加另一个具有该值的子节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多