Google firebase实时数据库 - 如何仅在json树的一部分上获取事件更新

时间:2016-11-02 16:21:07

标签: android firebase-realtime-database

想象一下,我有一个或多或少看起来像这样的firebase json树:

 //ignore poorly nested structure as this is an example
{
"chats": {
"one": {
 "title": "Historical Tech Pioneers",
 "messages": {
   "m1": { "sender": "ghopper", "message": "Relay malfunction found. Cause: moth." },
   "m2": { ... },
   // a very long list of messages
 }
},
"two": { ... }
}
}

现在在firebase中获取数据库实例后,如果只更改了“two”部分,我怎么才能收到更新。所以我想在“两个”部分同步并忽略对“一个”的更改。

Firebase有一个我可以使用的ValueEventListener类,如下所示:

 ValueEventListener postListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        Post post = dataSnapshot.getValue(Chats.class);
 // ...this gets me the entire Chats object, i just needs the "two" object
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    }
};

所以即时通讯我无法订阅只有“两个”事件的更改。我不知道如何设置事件监听器。

1 个答案:

答案 0 :(得分:1)

您将侦听器附加到要侦听的节点:

DatabaseReference root = FirebaseDatabase.getInstance().getReference();
DatabaseReference sectionTwo = root.child("two");
sectionTwo.addValueListener(...

通过单击底部的链接,您可以轻松查看文档中的示例代码段如何工作。对于您从listening for value events上的部分复制的代码段,该链接指向this file in Github