为什么映射条件 return 总是值

why map with condition return always value

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

  getArtists(): Observable<DocumentData> {
    const users$ = this.firestore.collection('/Users').get()
    users$.subscribe((users) => {
      users.docs.map(user => user.data().artistName !== "" && user.data().role === 'ARTIST')
    });
    return users$;
  }

但是当我得到这样的价值时:

this.userService.getArtists().subscribe(
      (userDocs) => {
        userDocs.docs.map((user) => {
          this.artists.push(user.data());
          console.log(this.artists)
          this.record = this.artists.length;
        })
      });

当 artistName 等于 "" 且角色不等于 'ARTIST' 时,它总是 return 用户。 为什么?

谢谢大家!

您需要将数据映射到 map 运算符而不是 subscription 和 return 中作为管道的值。 不幸的是,在您的代码中不清楚您想要过滤什么以及何时过滤,为什么 userusers.docs 中,而它往往是 doc.

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

import {filter, map} from 'rxjs/opreators';

  getArtists(): Observable<DocumentData> {
    return this.firestore.collection('/Users').get().pipe( // <- use pipe
       map(users => {
          // here some changes in users if we need.
          return users;
       }),
    ),
    filter(users => {
      returns true; // or false if we don't want to emit this value.
    }),
  }