我正在使用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
并填充所有{{1}在doers
中(包括特定doersList
中的user
),并且只有一个doer
方法。
因此得到的redux状态应如下所示,因为compose
对于cleanRoom只是michael
:
doer
这项任务可行吗?如果是的话,我该如何完成这项工作?任何结构性建议?
答案 0 :(得分:0)
填充像doerList
这样的列表是由另一个填充参数完成的。
将填充数组更改为...
const populatesTodoCreator = [
{ child: 'createdBy', root: 'users' },
{ child: 'doerList', root: 'doers' } // populates the whole list of elements
]
为我工作。
仅查询登录用户参与的todos
并填充user
对象中的doer
(以获得预期结果)是另一个问题。