useFirestoreConnect 与填充 - usage/implementation

useFirestoreConnect with populates - usage/implementation

数据库设置:

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

我有一个显示所有 rooms 的组件,我正在通过以下方式获取它:

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

这工作正常,但我现在还想为房间 readAccess 数组中的每个用户加载来自 usersPublic 的信息。

我正在尝试按以下方式使用 populates

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

我很确定我对 populates 的实现是错误的,而且我无法准确理解如何使它起作用。

一旦我有了房间对象,我就可以return为所有具有读取权限的用户提供一堆其他查询配置,但这似乎效率低下,而且 populates 似乎正是为了解决这个问题.

我也乐于接受有关建模数据库结构的建议 - 上面的内容对我来说很有意义,并且在 private/public 用户信息之间提供了很好的分离,但可能有更好的方法。

方法是:

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

这导致 redux 状态如下所示:

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