Вы не предоставили свой существующий код для отображения всех сообщений, поэтому сложно дать точный код для добавления ...
Но, в принципе, у вас есть два варианта:
Поиск имени пользователя в коллекции пользователей
Перед отображением 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/