【问题标题】:Updating the data on Firebase Android更新 Firebase Android 上的数据
【发布时间】:2016-12-23 06:40:00
【问题描述】:

我想在特定节点上更新 Firebase 上的日期。

数据库结构:

我正在尝试

private void updateData() {
database = FirebaseDatabase.getInstance();
myref = database.getReference();
myref.child("myDb").child("awais@gmailcom").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        dataSnapshot.getRef().child("leftSpace").setValue(newValue);
        dialog.dismiss();
        
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d("User", databaseError.getMessage());
    }
});
}

我想用newValue的值更新leftSpace键,newValue是这里的字符串类型。但它不会更新 Firebase 中的值。

如果我给这里

dataSnapshot.getRef().child("leftSpace").setValue(765);

它更新得很好。但我想在 Firebase 上以字符串的格式更新。

我在 Firebase 上保存了所有字符串类型的数据。 (我的模式类包含所有类型字符串)

为什么这里不更新字符串类型的newvalue

编辑 1 由@Rjz Satvara 建议

您的方法是在myDB 下添加一个新节点

它没有更新已经存在的。

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    Firebase 要更新特定值,您可以使用它...

    ref.child("myDb").child("awais@gmailcom").child("leftSpace").setValue("YourDateHere");
    

    或者您可以使用“/”进入孩子,如下所示:

    ref.child("myDb/awais@gmailcom/leftSpace").setValue("YourDateHere");
    

    【讨论】:

    • 不工作。它正在创建一个新节点。请参阅有问题的编辑 1。
    • 还是不行。它在myDb 节点下添加一个名为leftSpace 的新节点。 (myDb 是我的数据库名称)。看看我在哪里。我将代码运行为myref.child("CarParki").child("awais@gmailcom").addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { try { myref.child("awais@gmailcom").child("leftSpace").setValue("YourDateHere"); } catch (Exception e) { e.printStackTrace(); }
    • yup.. 恭喜,谢谢.. 快乐分享,继续学习,享受
    • 您可以将整个路径作为一个字符串传递。所以这个更短的代码完成了同样的事情:ref.child("myDb/awais@gmailcom/leftSpace").setValue("YourDateHere");
    【解决方案2】:

    您可以在同一个孩子中分配新值,例如

      Firebase firebase = new Firebase("your database link/myDb");
        firebase.child("awais@gmail.com").child("leftSpace").setValue("newValue");
    

    【讨论】:

      【解决方案3】:

      根据Firebase官方文档可以这样更新父节点的具体节点

      以这种方式使用 setValue() 会覆盖指定位置的数据,包括任何子节点。但是,您仍然可以在不重写整个对象的情况下更新子对象。如果您想允许用户更新他们的个人资料,您可以按如下方式更新用户名:

          FirebaseDatabase  database = FirebaseDatabase.getInstance();
          DatabaseReference mDatabaseRef = database.getReference();
      
          mDatabaseRef.child("TABLE_NAME").child("orderStatus").setValue(2);
      

      注意! TABLE_NAME 表示您要更新其子节点的父节点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-05
        • 2017-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多