我有一个post
的列表,我用.on('child_added')
提取它们,问题是我只想在添加项目时获得post
,而不是在删除项目时获得,但是似乎即使删除帖子,也会调用.on('child_added')
。就我而言,这不是我所需要的。
这是我的功能:
if(fromClick) { this.subscription.off(); this.firstRun = true;}
this.postFeed = new Array();
this.subscription = this.database.database.ref('/posts/'+this.locationId)
.orderByChild('created')
.limitToLast(10);
this.subscription.on('child_added', (snapshot) => {
this.postFeed.push(snapshot.val());
});
因此它显示最后一个
10
,然后在添加项目时也将其添加到数组中,但是在删除项目时会再次调用它。我该如何预防?这样,调用仅针对添加的
post
? 最佳答案
如果您要致电:
this.database.database.ref('/posts/'+this.locationId)
.orderByChild('created')
.limitToLast(10);
您正在创建一个包含10个最新帖子的查询。如果您删除其中一个,则另一个将成为最近的第十个帖子,因此您将得到一个
child_added
。我唯一可以想象的就是只获得10次,然后执行
limitToLast(1)
:this.database.database.ref('/posts/'+this.locationId)
.orderByChild('created')
.limitToLast(10)
.once("value", function(snapshot) {
snapshot.forEach(function(child) {
// These are the initial 10 children
});
});
this.database.database.ref('/posts/'+this.locationId)
.orderByChild('created')
.limitToLast(1)
.on("child_added", function(snapshot) {
// This is the latest child, but this will also fire when you remove the current latest
});