"карта не является функцией" с редукс-ормом 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

Я что-то пропустил? Или это ошибка с библиотекой?

1 ответ

Решение

Вам нужно использовать либо toModelArray или же toRefArray, Код, эквивалентный тому, что вы, похоже, собираетесь использовать в своем примере (получение ссылок для каждого User) было бы:

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

Если вам нужно выполнить дальнейшую обработку, например, получить отношения или улучшить только подмножество свойств, используйте toModelArray а также map через него, как вы бы нормальный массив.

Другие вопросы по тегам