更新Firebase Android

时间:2016-12-23 06:40:01

标签: android firebase firebase-realtime-database

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

数据库结构:

enter image description here

我正在尝试

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());
    }
});
}

我想使用leftSpace的值更新newValue密钥,此处newValue是字符串的类型。但它没有更新Firebase中的值。

如果我在这里

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

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

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

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

编辑1 建议@Rjz Satvara

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

enter image description here

它没有更新已经存在的。

4 个答案:

答案 0 :(得分:12)

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

     try {
           ref.child("myDb").child("awais@gmailcom").child("leftSpace").setValue("YourDateHere");
        } catch (Exception e) {
                e.printStackTrace();
       }

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

根据Firebase官方文档,您可以通过这种方式更新父节点的特定节点

  

以这种方式使用setValue()会覆盖指定位置(包括所有子节点)上的数据。但是,您仍然可以更新子级而无需重写整个对象。如果要允许用户更新其个人资料,则可以如下更新用户名:

    FirebaseDatabase  database = FirebaseDatabase.getInstance();
    DatabaseReference mDatabaseRef = database.getReference();

    mDatabaseRef.child("TABLE_NAME").child("orderStatus").setValue(2);

注意! TABLE_NAME是指您要更新其子节点的父节点。

enter image description here

答案 3 :(得分:0)

要更新Firebase数据,您可以执行以下操作。

dataSnapshot.getRef().child("awais@gmailcom").update({
  leftSpace: 765
});

有关更多信息,请查看文档。
https://firebase.google.com/docs/database/web/read-and-write#updating_or_deleting_data