useFirestoreConnect с заполнением - использование / реализация - PullRequest
0 голосов
/ 20 июня 2020

Настройка БД:

- users
  - A: { // private user info }
- usersPublic
  - A: { // public user info }
- rooms
  - 1: { readAccess: ['A'] }

У меня есть компонент, который отображает все rooms, и я получаю его следующим образом:

useFirestoreConnect(() => [{collection: 'rooms'}] )

Это работает нормально, но я теперь хочу также загрузить информацию из usersPublic для каждого пользователя в комнатах readAccess массив.

Я пытаюсь использовать populates следующим образом:

useFirestoreConnect(() => [{
  collection: 'rooms',
  populates: [{
    root: 'usersPublic',
    child: 'A'
  }]
}])

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

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

Я также открыт для предложений по моделированию структуры БД - вышесказанное имело смысл для меня и предлагает хорошее разделение между информацией о пользователях private / publi c, но может быть способ получше.

1 Ответ

0 голосов
/ 25 июня 2020

Способ сделать это:

populates: [{ root: usersPublic, child: 'read_access ' }]

Это приводит к состоянию редукции, которое выглядит следующим образом:

...etc
data: {
  rooms: { ... rooms ... }
  usersPublic: { A: { ... usersPublic[A] ... }, etc }
}
...