【问题标题】:How to populate roles in firestore with react-redux-firebase package如何使用 react-redux-firebase 包填充 Firestore 中的角色
【发布时间】:2026-01-23 10:45:01
【问题描述】:

所以我正在使用这个包,并希望应用 this reciept 将我的 firestore 中名为“roles”的集合中的数据填充到 redux 状态下的 firebase/profile 数据中。

在这个文档中说,我的角色集合必须是 firestore 中用户集合的兄弟,但在我的情况下这是不可能的。我有不同的集合:存储用户数据的用户和存储应用树和按角色访问的角色。

如何使用这个包在不同的集合之间填充数据?请帮帮我..

我正在使用此代码进行设置:

const store = createStore(
  rootReducer,
  composeEnhancers(
    applyMiddleware(thunk.withExtraArgument({ getFirebase, getFirestore })),
    reduxFirestore(fbConfig),
    reactReduxFirebase(fbConfig, {
      useFirestoreForProfile: true,
      userProfile: 'users',
      profileParamsToPopulate: [
      { child: 'profile', root: 'roles' }, //But that's not working because roles is not sibling of users
      ],
      attachAuthIsReady: true
    })
  )
)

这是我在firestore中数据的截图

【问题讨论】:

    标签: reactjs react-redux firebase-authentication google-cloud-firestore react-redux-firebase


    【解决方案1】:

    尝试将 profile 字段的类型从字符串更改为 reference。将配置文件字段作为参考时,您的数据将被填充。存储到引用字段时,您还需要包含引用所在的集合。这意味着配置文件字段中的数据应该类似于 "roles/{roleId}",当然您应该将 {roleId} 替换为角色的 id您正在尝试保存在配置文件字段中。在您显示的第一张图片中,配置文件字段中的数据应如下所示:'roles/q3Kb0dM2XBRzS4IIrDm'

    附:如果您从代码中添加引用字段,请使用此行

    db.doc(roles/${roleId})

    db 是您通过在操作中使用 getFirestore() 获得的 Firestore 对象。

    【讨论】:

      【解决方案2】:

      如果您根据rrf docs's populate 部分配置代码并将useFirestoreForProfile 设置为true,您将看到以下console.warning

      Profile population is not yet supported for Firestore
      

      好像暂时不支持?

      查看this问题了解更多详情

      【讨论】: