Dictionary 为什么映射条件总是返回值

Dictionary 为什么映射条件总是返回值,dictionary,rxjs,rxjs-observables,Dictionary,Rxjs,Rxjs Observables,我使用rxjs映射在firestore中检索数据,如下所示: getArtists():可观察{ const users$=this.firestore.collection('/users').get() 用户$.subscribe((用户)=>{ users.docs.map(user=>user.data().artistName!==“”&&user.data().role=='ARTIST') }); 返回用户$; } 但当我得到这样的价值时: this.userService.ge

我使用rxjs映射在firestore中检索数据,如下所示:

getArtists():可观察{
const users$=this.firestore.collection('/users').get()
用户$.subscribe((用户)=>{
users.docs.map(user=>user.data().artistName!==“”&&user.data().role=='ARTIST')
});
返回用户$;
}
但当我得到这样的价值时:

this.userService.getArtists().subscribe(
(userDocs)=>{
userDocs.docs.map((用户)=>{
this.artists.push(user.data());
console.log(this.artists)
this.record=this.artists.length;
})
});
当artistName等于
且角色不等于
“艺术家”
时,它将始终返回用户。 为什么?


谢谢大家

您需要在
map
操作符中映射数据,而不是在
订阅中映射数据,并以管道的形式返回值。
不幸的是,在您的代码中,不清楚您想过滤什么以及何时过滤,为什么
用户
users.docs
中,而它往往是
doc

请检查下面的示例,并考虑用更多信息更新您的问题。

从'rxjs/opreators'导入{filter,map};
getArtists():可观察{
返回此.firestore.collection('/Users').get().pipe(//{
//这里有一些用户的变化,如果我们需要的话。
返回用户;
}),
),
过滤器(用户=>{
返回true;//如果不希望发出此值,则返回false。
}),
}

我这样解析:getArtists():Observable{返回this.firestore.collection('/Users').get().pipe(映射((用户)=>Users.docs.filter(用户=>user.data().artistName!==“”&user.data().role=='ARTIST').map(用户=>user)))但是我如何才能在我的组件中获得管道的值呢?就像您通过
订阅
=
this.userService.getArtists().subscribe在代码中所做的一样。目标是只在需要在某处显示数据时订阅。如果需要过滤/转换/连接等,请使用管道。注释中的解决方案很好,但是
.map(user=>user)
是多余的,它不会改变任何东西。