Извлечение данных из Cloud Firestore внутри циклов ngFor в проекте Angular - PullRequest
0 голосов
/ 01 декабря 2018

В настоящее время я работаю над списком сообщений в моем проекте Angular.Каждое сообщение имеет содержание и идентификатор пользователя плаката.

В каждом сообщении я хочу получить имя пользователя и возраст из Cloud Firestore, используя идентификатор пользователя сообщения.Но я получаю ошибку ниже.

ERROR Error: Function CollectionReference.doc() requires its first argument to be of type non-empty string, but it was: a custom Object object
    at new FirestoreError (index.cjs.js:346)

Как мне это сделать?Кроме того, есть ли способ не использовать pipe дважды для имени и возраста?

Это класс Post.

export class Post {
  postId: string;
  userId: string;
  content: string;
}

Это класс User.

export class User {
  userId: string;
  name: string;
  age: number;
}

Это шаблон списка сообщений.

<div *ngFor="let post of (posts | async)>
  <div>Name: {{(post.userId | userIdToUser | async)?.name}}</div>
  <div>Age: {{(post.userId | userIdToUser | async)?.age}}</div>
  <div>Content: {{post.content}}</div>
</div>

Это канал, который преобразует userId в Observable of User.

import { Pipe, PipeTransform } from '@angular/core';
import { User } from '../user';
import { UserService } from '../user.service';
import { Observable } from 'rxjs';

@Pipe({
  name: 'userIdToUser'
})
export class UserIdToUserPipe implements PipeTransform {

  constructor(private userService: UserService){}

  transform(value: string, args?: any): Observable<User> {
    return this.userService.getUserWithId(value);
  }
}
...