Vuejs2 VueJs、Vuefire、Firestore:如何筛选同步的Firestore文档

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').

使用vuefire可以在vue实例上设置firestore对象,并自动将其与firestore同步。我还想对另一个数据点进行过滤,但过滤会导致错误

下面的代码返回所需的、工作完美的员工。Firebase用户(fbUser)返回

网页包\u导入的\u模块\u 0\u服务\u Firebase.a.集合(…).filter 这不是一个函数

VueTools中的数据点为空

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”)
},