Vuejs2 VueJs、Vuefire、Firestore:如何筛选同步的Firestore文档
使用vuefire可以在vue实例上设置firestore对象,并自动将其与firestore同步。我还想对另一个数据点进行过滤,但过滤会导致错误 下面的代码返回所需的、工作完美的员工。Firebase用户(fbUser)返回 网页包\u导入的\u模块\u 0\u服务\u Firebase.a.集合(…).filter 这不是一个函数 VueTools中的数据点为空Vuejs2 VueJs、Vuefire、Firestore:如何筛选同步的Firestore文档,vuejs2,google-cloud-firestore,vuefire,Vuejs2,Google Cloud Firestore,Vuefire,使用vuefire可以在vue实例上设置firestore对象,并自动将其与firestore同步。我还想对另一个数据点进行过滤,但过滤会导致错误 下面的代码返回所需的、工作完美的员工。Firebase用户(fbUser)返回 网页包\u导入的\u模块\u 0\u服务\u Firebase.a.集合(…).filter 这不是一个函数 VueTools中的数据点为空 firestore() { return { staff: db.collection('staff').
firestore() {
return {
staff: db.collection('staff').orderBy('lastname'),
fbUser: db.collection('staff').filter(s => s.email === this.current_user.email)
}
},
db.collection
不直接返回结果。我不知道实现方法,但我想vuefire
将创建一个名为fbUser
的数据字段,并将结果保存在其中
我认为,最好的解决方案是使用计算数据,如:
computed: {
fbUserFiltered () {
return this.fbUser.filter(s => s.email === this.current_user.email);
}
}
我意识到这是一个老问题,但我有同样的问题,希望得到一个更一般的答案
如果要避免查询整个集合而仅放弃客户端上的不匹配结果,可以在created()
事件中使用$bind()
函数,例如
数据:()=>({
财务部工作人员:[],
}),
创建(){
const filtered_entries=db.collection('staff')。其中('department','==','finance');
该.$bind('财务人员',过滤的项目);
},
或者,如果需要等待验证状态:
created(){
auth.onAuthStateChanged(异步用户=>{
如果(!user)返回;
const filtered_entries=db.collection('staff')。其中('manager_id','=',user.uid);
这是。$bind('my_staff',过滤的_条目);
});
},
请注意,如果您已经知道文档ID,则更简单:
firestore:{
当前员工:db.集合(“员工”)文件(“abcd1234”)
},