"map is not a function" 使用 redux-orm 0.9.0

"map is not a function" with redux-orm 0.9.0

我正在创建一个简单示例来学习 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;
}

我正在按照示例创建一个简单的选择器,它获取数据库中的整个用户列表:

export const getUsers = createSelector(orm, session => {
  return session.User.map(user => {
    return user.ref
  });
});

然而,在使用选择器时,Chrome 给我一个错误: ERROR TypeError: session.User.map is not a function

我错过了什么吗?或者这是库的错误?

您需要使用 toModelArraytoRefArray。在你的例子中你似乎想要的等效代码(获取每个 User 的引用)将是:

return session.User.all().toRefArray()

如果您需要进行进一步的处理,例如获取关系或仅精炼属性的子集,请像处理普通数组一样使用 toModelArraymap 通过它。