как получить имя пользователя в firestore из другой коллекции с angularfire - PullRequest
0 голосов
/ 26 октября 2019

как получить имя пользователя в firestore из другой коллекции с angularfire

У меня есть 2 коллекции

-users
--username
--uid

и

-post
--title
--user_id

Как получитьимя пользователя при отображении всех сообщений?

Я мог только вернуть user_id

1 Ответ

1 голос
/ 26 октября 2019

Вы не предоставили свой существующий код для отображения всех сообщений, поэтому сложно дать точный код для добавления ...

Но, в принципе, у вас есть два варианта:

Поиск имени пользователя в коллекции пользователей

Перед отображением post вы делаете дополнительный запрос к базе данных, чтобы получить значение username, например afs.collection('users', ref => ref.where('uid', '==', 'user_id)) (см. https://github.com/angular/angularfire/blob/master/docs/firestore/querying-collections.md)

Это означает дополнительное чтение для каждого отображаемого сообщения

Сохранение имени пользователя вместе с идентификатором пользователя при сохранении документа публикации

Это классическийподход в мире NoSQL: вы денормализуете свои данные таким образом, что ваш запрос легко построить и выполнить.

Конкретнее, это означает, что ваша коллекция сообщений будет выглядеть так:

-post
--title
--user_id
--username

Однако это возможно только в том случае, если при написании документа post в вашем интерфейсе указано значение username. Один из классических способов - получить его из объекта currentuser. , через currentuser.displayname.

Один побочный эффектПодход заключается в том, что вам нужно синхронизировать значения (т. е. значения в документе user и значения в документе post s ). Тем не менее, в вашем конкретном случае мы можем предположить, что имя пользователя не будет меняться очень часто ...


Вы не должны бояться дублировать данные и денормализовать вашу модель данных. Вот «известный» пост о подходах моделирования данных NoSQL: https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/

...