我想知道是否可以在查询列表中使用“child_added”事件。像这样:
this.curUserPosts = this.af.database.list('/posts', {
query: {
orderByChild: 'user/id',
equalTo: id
}
}).$ref.on("child_added", (child) => {
console.log(child);
});
我对以下内容感兴趣: 它会起作用吗?仅当添加的子对应于查询时才会正常触发。性能如何。
此外,在firebase中处理此类查询列表的首选方法是什么?
答案 0 :(得分:3)
不,它不起作用;它不会应用查询。
ref$
的{{1}}属性不是用于配置查询的引用。您可以在source code中看到这一点(构造函数的FirebaseListObservable
参数已分配给ref
属性):
$ref
但是,如果您想自己使用return new FirebaseListObservable(ref, subscriber => {
...
let queried: firebase.database.Query = ref;
if (query.orderByChild) {
queried = queried.orderByChild(query.orderByChild);
} else if (query.orderByKey) {
queried = queried.orderByKey();
} else if (query.orderByPriority) {
queried = queried.orderByPriority();
} else if (query.orderByValue) {
queried = queried.orderByValue();
}
,可以撰写自己的查询:
child_added
请注意,在您的代码中,通过调用this.curUserPosts = this.af.database.list('/posts', {
query: {
orderByChild: 'user/id',
equalTo: id
}
});
this.curUserPosts.$ref
.orderByChild('user/id')
.equalTo(id)
.on("child_added", (child) => {
console.log(child);
});
上的on
,您的$ref
属性将被分配给observable以外的其他内容;它将被分配给您传递给this.curUserPosts
的听众。
答案 1 :(得分:-1)
是的,这适用于列表的所有初始项目。
为所有初始项目调用child_added
后,对于将要调用的所有未来项目child_added
将被调用,但它不再被排序。