【发布时间】:2017-01-19 08:56:10
【问题描述】:
我有一个相对简单的 Firebase 数据库,如下所示:
如何更新Room1 节点?如果我使用此代码,而不是更新该节点,它会添加另一个节点,新名称为Room2。
databaseReference = FirebaseDatabase.getInstance().getReference().child("Rooms");
Query updateQuery = databaseReference.child(Room1).orderByKey().equalTo(Room1);
updateQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getRef().getParent().child("Room2").setValue("");
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
提前致谢!
【问题讨论】:
-
FirebaseDatabase.getInstance().getReference().child("Rooms1").setValue("your value here");就足够了。为什么要添加所有代码?您是否还想检测数据何时发生变化? -
我只想把
Room1的名字改成Room2。如果我按照你说的做,Room1会得到这样的值:"Room1": "Room2"。我怎样才能只更新Room1? -
哦,重命名?你有
Room自定义对象吗?如果你有那么它会更容易。概念是从Room1获取所有数据,并将它们分配给Room自定义对象。然后从数据库中删除Room1节点。然后添加名为Room2的新节点并将Room自定义对象分配给该新节点。 -
您无法更改现有节点的键或移动 Firebase 数据库中的分支。没有用于此的 API。您需要创建一个副本,然后删除原件。以前有人问过这个问题,所以我会找到一个重复的。
-
我没有找到那个帖子,但是谢谢,它解决了我的问题。创建副本而不是删除原件是正确的答案。
标签: android firebase firebase-realtime-database