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)
传递。