Firebase Angularfire2 - 监听查询列表 child 添加
Firebase Angularfire2 - listening on queried list child added
我想知道是否可以对查询列表使用 "child_added" 事件。像这样:
this.curUserPosts = this.af.database.list('/posts', {
query: {
orderByChild: 'user/id',
equalTo: id
}
}).$ref.on("child_added", (child) => {
console.log(child);
});
我对这里的以下内容感兴趣:
它会起作用吗?只有当添加 child 对应于查询时,它才会正确触发。它的性能如何。
此外,在 firebase 中处理此类查询列表的首选方法是什么?
是的,这应该适用于列表的所有初始项。
一旦为所有初始项目调用 child_added
,那么对于每个未来添加的项目,都会调用 child_added
,但不会再对其进行排序。
不行,不行;它不会应用查询。
FirebaseListObservable
的 ref$
属性 将不是配置查询的引用。你可以在source code中看到这一点(构造函数的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);
});
请注意,在您的代码中,通过在 $ref
上调用 on
,您的 this.curUserPosts
属性 将被分配一些不同于 observable 的东西;它将分配给您传递给 on
.
的侦听器
我想知道是否可以对查询列表使用 "child_added" 事件。像这样:
this.curUserPosts = this.af.database.list('/posts', {
query: {
orderByChild: 'user/id',
equalTo: id
}
}).$ref.on("child_added", (child) => {
console.log(child);
});
我对这里的以下内容感兴趣: 它会起作用吗?只有当添加 child 对应于查询时,它才会正确触发。它的性能如何。
此外,在 firebase 中处理此类查询列表的首选方法是什么?
是的,这应该适用于列表的所有初始项。
一旦为所有初始项目调用 child_added
,那么对于每个未来添加的项目,都会调用 child_added
,但不会再对其进行排序。
不行,不行;它不会应用查询。
FirebaseListObservable
的 ref$
属性 将不是配置查询的引用。你可以在source code中看到这一点(构造函数的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);
});
请注意,在您的代码中,通过在 $ref
上调用 on
,您的 this.curUserPosts
属性 将被分配一些不同于 observable 的东西;它将分配给您传递给 on
.