Получить несколько предметов в Firestore - PullRequest
0 голосов
/ 23 января 2019

У меня есть следующая структура данных в Firestore:

{
  items: [
    itemId1: {},
    itemId2: {},
    itemId3: {}
  ],
  users: [
    userId1: {
      itemIds: [
        "itemId1",
        "itemId3"
      ]
    }
  ]
}

Цель этой структуры данных состоит в том, чтобы многие пользователи имели доступ к одним и тем же элементам и сотрудничали с ними. Поэтому перенос предметов в каждого пользователя будет довольно неэффективным и трудным.

Если у меня есть userId (userId1), я бы хотел запросить коллекцию элементов для всех элементов, которые находятся в массиве itemIds пользователя.

Итак, в этом примере будет возвращено [itemId1: {}, itemId3: {}].

Мое приложение использует Angular (7.2.1) и Angularfire.

Если мои структуры данных изначально имеют недостатки, дайте мне знать, и я могу попытаться изменить их.

Спасибо заранее.

1 Ответ

0 голосов
/ 23 января 2019
this.afs.doc('users/' + userId1).valueChanges().subscribe(itemIds=>{
  itemIds.forEach(itemId=>{
    this.afs.doc<Item>('items/'+ itemId).valueChanges().subscribe(item=> {
      console.log(item);
    });
  })
});

Вы можете попробовать это. первый afs.doc извлекает массив itemId из коллекции users forEach перебирает все itemIds и делает еще один запрос в пожарном хранилище для items коллекции с идентификатором документа _itemId

Я не запускаю код. но это должно прояснить идею о том, как запрашивать такие структуры. Надеюсь, что ответ на ваш вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...