我想在特定节点上更新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());
}
});
}
我想使用leftSpace
的值更新newValue
密钥,此处newValue
是字符串的类型。但它没有更新Firebase中的值。
如果我在这里
dataSnapshot.getRef().child("leftSpace").setValue(765);
它更新得很好。但我想在Firebase上以字符串格式更新。
我在Firebase上保存了所有字符串类型的数据。 (我的模式类包含所有类型字符串)
为什么不在这里更新类型字符串的newvalue
?
编辑1 建议@Rjz Satvara
您的方法是在myDB
下添加新节点
它没有更新已经存在的。
答案 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是指您要更新其子节点的父节点。
答案 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