Поиск массива выдает ошибку "Свойство 'id' не существует для типа 'unknown'", выполняющее соединение с firebase в Angular (Ошибка TS2339) - PullRequest
1 голос
/ 16 февраля 2020

Здравствуйте, я пытаюсь сделать этот урок о том, как сделать соединение в firebase с помощью angular: https://medium.com/@joaqcid / how-to-inner-join-data-from-множественных коллекций на angular -firebase-bfd04f6b36b7

my othercomponent.ts ngOnInit:

this.joined$ = this.afs.collection<ChatInterface>('chats').valueChanges()
     .pipe(
       switchMap(blogPosts => {
         const authorIds = uniq(blogPosts.map(bp => bp.uid))

         return combineLatest(
           of(blogPosts),
           combineLatest(
             authorIds.map(uid =>
               this.afs.collection<User>('users', ref => ref.where('uid', '==', uid)).valueChanges().pipe(
                 map(authors => authors[0])
               )
             )
           )
         )
       }),
       map(([blogPosts, authors]) => {

    return blogPosts.map(blogPost => {
           return {
             ...blogPost,
             author: authors.find(a => a.id === blogPost.uid)
           }
         })
       })
     )

Похоже, что за ним легко следить, но я не знаю, что могу ошибаться (angular 8 и учебник 7, возможно, изменил поиск?), но я получаю ошибку TS2339: Свойство 'id' не существует для типа 'unknown'. on line: author: authors.find(a => a.id === blogPost.uid) Уроки stackblitz: https://stackblitz.com/edit/angular-firebase-join-data?file=src%2Fapp%2Fapp.component.ts

Мой интерфейс чата:

 export interface ChatInterface {
  groupId: string;
  uid: string;
  content: string;
  file: string;
  date: number;
}

Мой пользовательский интерфейс:

 export interface User {
  uid: string;
  email: string;
  displayName: string;
  photoURL: string;
  emailVerified: boolean;
}

Единственное отличие, которое я мог найти с кодом против этого, это то, что он обнаруживается как любой, а не строка: это стекблиц: enter image description here

Это мой код: enter image description here

и авторы определяются как неизвестные вместо пользователя

enter image description here

enter image description here

1 Ответ

0 голосов
/ 01 мая 2020

У меня была та же проблема, и определение «а» для меня было решением:

author: authors.find((a:any) => a.id === blogPost.uid)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...