Я застрял с извлечением структуры данных в firestore. Я могу удовлетворить только требование № 1. Пожалуйста, помогите мне в этом.
Требования:
Показать последние k сообщений независимо от пользователей (последние k сообщений по всей базе данных)
Показать сообщения, соответствующие нескольким пользователям (сообщения, соответствующие пользователю, на которого я подписан)
Ниже приведены две структуры данных, о которых я мог подумать, но все еще не в состоянии выполнить 2-е требование.
Структура данных1:
/posts/{postId}/
-authorId //one among /users/{userId}
-message
-date
/users/{userId}/
-name
-etc...
Req1: Показать последние k сообщений независимо от пользователей
constructor(private afs: AngularFirestore) {}
// code to fetch latest k posts
this.afs.collection("posts").ref
.orderBy("date", "desc")
.limit(k)
.get().then(snapshot => {
snapshot.forEach(postDoc => {
console.log(postDoc.data());
// rest of the code
});
});
Req2: Показать сообщения, соответствующие нескольким пользователям
Проблема: в приведенном выше коде, если я добавлю метод «где», он может фильтровать только для одного authorId, а не для нескольких.
например
this.afs.collection("posts").ref
.where("authorId" == "xyz...")
.orderBy("date", "desc")
.limit(k)
Структура данных2:
/users/{userId}/
-name
-etc...
/posts/{postId}/ (collection inside user document)
-message
-date
Не уверен, но я думаю, что структура данных была бы более эффективной, чем структура данных1, потому что при поиске публикаций, соответствующих пользователям, за которыми я следую, нет необходимости искать всю коллекцию публикаций, просто посмотрите на коллекцию записей пользователи, на которых вы подписаны
Вопрос: как получить последние k сообщений в приведенной выше структуре данных?