我正在使用react-native,但在使用firebaseConnect加载特定于用户的数据时遇到了问题。假设有很多todos、users和doers,但不想引用它们的所有元素。
首先,我在实时数据库中的数据结构的快捷方式:
- 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的身份参与,并填充doersList中的所有doers (包括特定doer中的user ),所有这些都只在一个compose方法中。
因此,生成的redux状态应该如下所示,因为michael只是cleanRoom的doer:
- todos
|- cleanRoom
|- createdBy
| |- name: Alica
| |- age: 27
|- title: "Clean the room up"
|- doerList
|- roomCleanerMichael
| |- user
| | |- name: Michael
| | |- age: 22
| |- status: done
|- roomCleanerAlica
|- user
| |- name: Alica
| |- age: 27
|- status: done这项任务可行吗?如果是,我该如何完成此任务?有什么结构上的建议吗?
发布于 2018-01-11 20:44:02
填充像doerList这样的列表是由另一个填充参数完成的。
将填充数组更改为...
const populatesTodoCreator = [
{ child: 'createdBy', root: 'users' },
{ child: 'doerList', root: 'doers' } // populates the whole list of elements
]对我很管用。
只查询登录用户参与的todos并在doer对象中填充user (以获得预期结果)是另一个问题。
https://stackoverflow.com/questions/48198537
复制相似问题