我有一个按钮,在我的Android应用程序,当按下应该更新得分在Firebase数据库;
// UPDATE DATABASE START
final String getArgument = getArguments().getString("matchid");
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
final DatabaseReference ref = database.child("Matches");
final Query gameQuery = ref.orderByChild("gameID").equalTo(getArgument);
gameQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
if(snapshot.exists()){
for (DataSnapshot child: snapshot.getChildren()) {
ref.child(getArgument).child("homeScore").setValue(5);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//UPDATE DATABASE END当我执行代码时,我在数据库中得到一个新的记录,而不是更新现有的字段数据。我已经通过Firebase控制台手动打开了数据库,而不是以编程方式更新记录,所以我使用了我在DB中创建的作为PK的gameID。我已经将要更新的值硬编码为5,以使其首先工作。
Firebase中的数据结构为;
-Matches
- Match_01
-matchID
-homeScore
-etc....所有的帮助都很感激。
发布于 2018-03-04 22:57:09
要更新,您需要这样做:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Matches").child("Match_01");
Map<String, Object> updates = new HashMap<String,Object>();
updates.put("matchID", newID);
updates.put("homeScore", newscore);
//etc
ref.updateChildren(updates);更多信息在这里:
若要同时写入节点的特定子节点而不覆盖其他子节点,请使用updateChildren()方法。
https://stackoverflow.com/questions/49101324
复制相似问题