Angular Firebase: запрос документов с указанием c ссылки - PullRequest
0 голосов
/ 01 апреля 2020

Проблема, с которой я сталкиваюсь, заключается в попытке запроса документов со ссылкой на другой документ из другой коллекции. Это мой фактический контекст:

Две коллекции: "сообщения" и "пользователи". Каждый документ "posts" имеет поле "user_id" (да, я из SQL: P), которое является ссылкой на документ "users". И у каждого «пользовательского» документа есть массив ссылок на «постовые» документы.

enter image description here

Я не знаю, насколько это эффективно. Я открыт для прослушивания других способов форматирования отношений моих документов.

Я имел в виду это: Массивы ссылок? Создание коллекций в «пользовательских» документах? Или действительное поле string в каждом документе "posts" с UID документа "users"?

Я уже пытался использовать функцию where () для запроса, но не работает с моим фактические схемы.

Я использую Express. js для внутреннего интерфейса.

Справка!

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Вы должны сохранить идентификатор пользователя (коллекцию) в полях документа.

public user(data) {
    return firebase.firestore().collection('users').add(data).then(ref => {
      firebase.firestore().doc('users/' + ref.id).update({ id: ref.id });
    });
  }

после: Если в сообщениях указан идентификатор пользователя, вы можете попробовать

 public getUsers(uid) {
    return firebase.firestore().doc('users/' + uid).get();
  }
0 голосов
/ 01 апреля 2020

Хорошо, я понял это самостоятельно:

let listPosts = [];
  for (const post of user.list_posts) {
    // eslint-disable-next-line no-await-in-loop
    listPosts.push((await db.collection('/posts').doc(post._path.segments[1]).get()).data());
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...