我正在创建一个简单的示例来学习redux-orm
库。我已经在下面设置了还原器,一切似乎都很好。
const orm = new ORM();
orm.register(Profile, User);
export function reducer(state, {type, payload}) {
const session = orm.session(state || orm.getEmptyState());
switch(type) {
case 'CREATE_USER':
session.User.create(payload)
break;
case 'CREATE_PROFILE':
session.Profile.create(payload)
break;
}
return session.state;
}
我正在按照一个示例来创建一个简单的选择器,该选择器获取了DB中的整个用户列表:
export const getUsers = createSelector(orm, session => {
return session.User.map(user => {
return user.ref
});
});
但是,使用选择器后,Chrome给我一个错误: ERROR TypeError: session.User.map is not a function
我想念什么吗?还是库的错误?
您需要使用toModelArray
或toRefArray
。与您在示例中似乎要追求的相同代码(为每个User
获取REFS)是:
return session.User.all().toRefArray()
如果您需要进行进一步的处理,例如建立关系或仅适用于属性的子集,请像正常的数组一样使用toModelArray
和map
。