Firestore,其中函数在Ionic/Angular应用程序中未按预期工作
以下是我的firestore数据库中的Firestore,其中函数在Ionic/Angular应用程序中未按预期工作,angular,typescript,firebase,ionic-framework,google-cloud-firestore,Angular,Typescript,Firebase,Ionic Framework,Google Cloud Firestore,以下是我的firestore数据库中的用户集合: 我试图使用以下方法仅返回用户其中isMechanic===false: private _mechanics = new BehaviorSubject<User[]>([]); get mechanics() { return this._mechanics.asObservable(); } return of( firebase.firestore().collection("users").
用户
集合:
我试图使用以下方法仅返回用户
其中isMechanic===false
:
private _mechanics = new BehaviorSubject<User[]>([]);
get mechanics() {
return this._mechanics.asObservable();
}
return of(
firebase.firestore().collection("users").where("isMechanic", "==", "false")
.get()
.then((docs) => {
const data = []
docs.forEach((doc) => {
data.push(doc);
});
this._mechanics.next(data)
console.log('Mechanics in UsersService:', this._mechanics);
console.log('Mechanics in UsersService:', this.mechanics);
}).catch((err) => {
console.log(err);
})
);
private\u mechanics=新行为主体([]);
获取力学(){
将此返回。_mechanics.asObservable();
}
归还(
firebase.firestore()集合(“用户”)。其中(“isMechanic”、“false”、“false”)
.get()
。然后((文档)=>{
常量数据=[]
docs.forEach((doc)=>{
数据推送(doc);
});
这个。_力学。下一个(数据)
log('users服务中的机制:',this.\u Mechanics);
log('users服务中的机制:',this.Mechanics);
}).catch((错误)=>{
控制台日志(err);
})
);
当前没有记录调用此方法时,将向控制台记录一个空数组。因此,即使(根据屏幕截图)isMechanic对此记录为false
,也不会返回任何记录
有人能告诉我这个功能要按预期工作需要做哪些更改吗
LoadedMechanics是一个空数组:
那么肯定user.isMechanic
是未定义的
或空的
看看下面的例子
let数据=[
{
},
{
IsMechanic:未定义
},
{
IsMechanic:空
},
{
IsMechanic:错误
}
]
console.log(数据)
data=data.filter(pr=>pr.IsMechanic==false)
console.log(数据)
我刚才设法弄明白了这一点
如果我用false
替换“false”
,则用户
集合将按预期进行筛选
替换
firebase.firestore().collection("users").where("isMechanic", "==", "false")
与
仅返回
users
其中isMechanic==false
首先,用户中的isMechanic
在哪里?它不起作用,因为isMechanic
不是数组中对象的属性。您是否尝试查看嵌套属性以查看属性的位置?例如,在元数据中。我不使用Firestore,但我想这应该记录在官方文档中?谢谢你的回答。我更新了上面的问题,因为我将在firebase中查询数据时尝试过滤数据,而不是在不需要更新答案时加载所有用户get()
函数在本例中返回一个query
对象,该对象包含empty
,docs
等道具。使用.map(doc=>({id:doc.id,…doc.data()}))将所有文档映射到新的对象数组中代码>
firebase.firestore().collection("users").where("isMechanic", "==", false)