почему карта с условием всегда возвращает значение - PullRequest
1 голос
/ 04 мая 2020

Я использую карту rx js для извлечения данных в 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'. почему?

спасибо всем!

1 Ответ

1 голос
/ 04 мая 2020

вам нужно отобразить данные в операторе map вместо subscription и вернуть значение в виде канала. К сожалению, в вашем коде не ясно, что и когда вы хотите фильтровать, почему user находится в users.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.
    }),
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...