数据库结构
questions
questionId
options
optionId
label
score
...
首先,我在代码中创建了一个数据库引用。
mQuestionDatabaseReference = FirebaseDatabase.getInstance().getReference("questions").child(questionId).child("options").child(optionId);
然后在选项中我使用事务更改了得分值。
mQuestionDatabaseReference.child("score").runTransaction(new Transaction.Handler() { ...
我可以成功更新分数值。现在我想知道数据库中的分数是否已经更新,以便我可以使用 addChildEventListener 更新我的UI。
mQuestionDatabaseReference.addChildEventListener(new ChildEventListener() {..
这个没关系。现在,我只想知道选项的得分子是否更新而不是整个选项。所以我做了
mQuestionDatabaseReference.child("score").addChildEventListener(new ChildEventListener() {..
现在,当我成功更新选项时,这个新的子事件监听器无法获得结果。
答案 0 :(得分:3)
您在ChildEventListener
中添加/optionId/score
但得分实际上没有任何子项,因此永远不会触发回调。
在这种情况下,您应该使用ValueEventListener
。
mQuestionDatabaseReference.child("score").addValueEventListener(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//dataSnapshot.getValue ...
}
});
在firebase events documentation中获取更多信息。