如何在firebase实时数据库中更新特定子节点的值?

时间:2018-04-17 19:23:41

标签: android firebase firebase-realtime-database

我正在制作一个基本的Android应用程序项目,我有这个database structure并希望更新特定的子节点(比如说room_price)
我试过这样做,但看起来我错过了阻止我实现这一目标的事情。

DatabaseReference dbRef=FirebaseDatabase.getInstance().getReference();    
dbRef.child("Rooms")
     .child(roomNumber)
     .child("room_price")
     .setValue(updatedPrice);

roomNumber和updatedPrice是具有int值的变量。

当我执行此代码时,不是更新room_price的值,而是从树结构中删除room_price节点,而我却无法理解为什么会这样做。如果代码出现问题,请纠正我,或者建议其他方法。

请注意,数据库规则没有问题。它是导致此问题的代码或数据库路径。

2 个答案:

答案 0 :(得分:1)

要更新room_price,请尝试以下操作:

DatabaseReference dbRef=FirebaseDatabase.getInstance().getReference();  
dbRef.child("Rooms").child(roomNumber);
Map<String, Object> updates = new HashMap<>();
updates.put("room_price", updatedPrice);

dbRef.updateChildren(updates);

更多信息:

Update Field

答案 1 :(得分:-1)

请注意,Firebase数据库不接受空值,因此如果您尝试使用任何导致空值的节点更新节点,则该节点将被删除。有关详细信息,请查看https://firebase.google.com/docs/database/admin/save-data

上的文档

我不确定这是否是你的问题背后的原因,我需要更多关于updatedPrice的信息,但是尝试记录这个变量并检查它的内容,也许它会解析为空值并导致错误

祝你好运!