使用react-redux-firebase在一种撰写方法中查询用户特定数据(包括人口)

时间:2018-01-11 01:18:26

标签: firebase react-native firebase-realtime-database react-redux react-native-firebase

我正在使用react-native,并且只能使用firebaseConnect加载用户特定数据。想象一下,有todosusersdoers,并且不想引用它们的所有元素。

首先,我的数据结构在实时数据库中的快捷方式:

- todos
  |- cleanRoom
  |    |- createdBy: alica
  |    |- title: "Clean the room up"
  |    |- doerList
  |        |- roomCleanerMichael
  |        |- roomCleanerAlica
  |- playBall
       |- createdBy: michael
       |- title: "Play the ball"
       |- doerList
           |- ballPlayerAlica

- users
  |- michael
  |    |- name: Michael
  |    |- age: 22
  |- alica
       |- name: Alica
       |- age: 27

- doers
  |- roomCleanerMichael
  |    |- user: michael
  |    |- status: done
  |- roomCleanerAlica
  |    |- user: alica
  |    |- status: done
  |- ballPlayerAlica
       |- user: alica
       |- status: done

我在RN中有一个视图/屏幕,其中应显示所有信息。现在,我有......

const populatesTodoCreator = [{child: 'createdBy', root: 'users'}]

const mapStateToProps = (state, props) => {
  return {
    todos: populate(state.firebase, 'todos', populatesTodoCreator),
    uid: state.firebase.auth.uid
  }
}

export default compose(
  firebaseConnect((props, store) => {
      return [
        {path: 'todos', populatesTodoCreator},
      ]
    }
  ),
  connect(mapStateToProps, mapDispatchToProps)
)(TodoOverviewScreen)

当我使用firebase.auth.uid = michael登录应用时,我只想引用todos的列表,其中michael参与doer并填充所有{{1}在doers中(包括特定doersList中的user),并且只有一个doer方法。

因此得到的redux状态应如下所示,因为compose对于cleanRoom只是michael

doer

这项任务可行吗?如果是的话,我该如何完成这项工作?任何结构性建议?

1 个答案:

答案 0 :(得分:0)

填充像doerList这样的列表是由另一个填充参数完成的。

将填充数组更改为...

const populatesTodoCreator = [
  { child: 'createdBy', root: 'users' },
  { child: 'doerList', root: 'doers' } // populates the whole list of elements
]

为我工作。

仅查询登录用户参与的todos并填充user对象中的doer(以获得预期结果)是另一个问题。