Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firestore,其中函数在Ionic/Angular应用程序中未按预期工作_Angular_Typescript_Firebase_Ionic Framework_Google Cloud Firestore - Fatal编程技术网

Firestore,其中函数在Ionic/Angular应用程序中未按预期工作

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

以下是我的firestore数据库中的
用户
集合:

我试图使用以下方法仅返回
用户
其中
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)