知道哪个孩子已经从`onDataChange` Firebase内部进行了更改

时间:2016-12-29 11:41:45

标签: android firebase firebase-realtime-database

这是我的Firebase数据库结构

"randomParentID" : {
  "description" : "my description is here",
  "meetings" : {
    "randomidmeetings2" : true
  },
  "members" : {
    "WoZ3X4OZBuRepEuZZ0mUONa5h1a2" : true,
    "fjshtY3lFdWott5Zd6lr9rJSy7z1" : true
  },
  "title" : "my title"
}

我需要知道randomParentID内的任何值何时发生变化。所以我把addValueEventListener放在那里。

但我还想将addChildEventListener添加到meetingsmembers节点,以便更具体地了解添加或删除的数据。

有了这个,当我只想要调用onChildAdded(或删除或更改)时,我也会调用onDataChange(来自randomParentID的监听器)。

我的问题是,有没有办法知道哪个子节点已经从onDataChange内部进行了更改,以便在更改的数据为meetings或{{{{}}时可以跳过它1}}。事件一共。感谢

1 个答案:

答案 0 :(得分:2)

  

有没有办法知道哪个子节点已经存在   从内部改变了onDataChange

不,没有。任何小的更改都会调用onDataChange

您可以在randomParentID/descriptionrandomParentID/title添加ValueEventListener,并继续使用randomParentID/meetingsrandomParentID/members

上的ChildEventListener

或者,将对象内的membersmeetings移动到项目外部。数据库看起来像这样

{
    "items" : {
        "randomParentID" : {
            "description" : "my description is here",
            "title" : "my title"
        }
    },
    "items_meetings" : {
        "randomParentID" : {
            "randomidmeetings2" : true
        }
    },
    "items_members" : {
        "randomParentID" : {
            "WoZ3X4OZBuRepEuZZ0mUONa5h1a2" : true,
            "fjshtY3lFdWott5Zd6lr9rJSy7z1" : true
        }
    }
}

使用此结构,您可以继续在ValueEventListener

使用items/randomParentID