Javascript 如何只在孩子加入时听!!不读取所有数据

Javascript 如何只在孩子加入时听!!不读取所有数据,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我有这个密码 var dataRef = firebase.database().ref('offers/'); dataRef.once('value').then(function (snapShoot) { snapShoot.forEach(function (datum) { keys = datum.key; var newdataRef = firebase.database().ref('offers/' + keys + '/users');

我有这个密码

var dataRef = firebase.database().ref('offers/');

dataRef.once('value').then(function (snapShoot) {

snapShoot.forEach(function (datum) {

    keys = datum.key;

    var newdataRef = firebase.database().ref('offers/' + keys + '/users');

    newdataRef.on('child_added', function (dataSnap) {

        Notify("SOME TEXT");

    })

   })
})`
我在('child_added')上使用了
on
在这个数据对象的用户点添加了一个监听器 不幸的是,这个
on('child_added')
正在对整个数据进行第一次执行,就像它的
on('value')


我怎样才能使它真正只侦听添加到此节点的子节点呢?

我使用了一个标志来解决这个问题

var dataRef = firebase.database().ref('offers/'); 

var flag = false;

dataRef.once('value').then(function (snapShoot) {

snapShoot.forEach(function (datum) {

keys = datum.key;

var newdataRef = firebase.database().ref('offers/' + keys + '/users');

newdataRef.on('child_added', function (dataSnap) {

 if (flag) {

    Notify("SOME TEXT");
  }

})
flag = true ;

}) 
})

这是一种方式。更常见的方法是在项目中包含时间戳,并将当前时间戳指定为
orderByChild(“时间戳”).startAt(…)
,或者记住应用程序看到的最新密钥,并将其作为
orderByKey().startAt(lastKeySeen)
传递。