У меня есть база данных бэкэнда mongoose (в Express с NodeJS) с реагирующим фронтом.База данных состоит из одного аутентифицированного пользователя (используя bcrypt и jwt) и «Показывает».Шоу могут видеть все, но только прошедший проверку пользователь может публиковать / редактировать / удалять.
У меня проблемы с редактированием шоу.После того, как mongoose находит правильное шоу для редактирования и реагирует на его показ, редуктор «show» перестает работать полностью, и если я пытаюсь перезагрузить предыдущую страницу, я получаю сообщение, что show.map не является функцией.Скорее всего, это связано с тем, как я загружаю одно шоу перед его редактированием, но я попробовал все, что мог придумать (state.filter / state.find или просто action.show), но безуспешно.Я должен добавить, что если я изменю оператор return в GET_SHOW просто на «состояние», перезагрузка работает нормально (но, конечно, я не получаю шоу для редактирования).Я использую реагирующий маршрутизатор для маршрутизации, но я не думаю, что это проблема, так как все остальное работает.
редуктор выглядит так:
const show = (state = [], action) => {
switch(action.type){
case GET_SHOW:
return state.find(show => action.show)
case LOAD_SHOWS:
return [...action.shows];
case EDIT_SHOW:
return action.show;
case REMOVE_SHOW:
return state.filter(show => show._id !== action.id)
default:
return state;
}
}
действие, чтобы получить шоу:
export const load = show => ({
type: GET_SHOW,
show
})
export const getShow = (show_id) => (dispatch, getState) =>{
let { setAdmin } = getState();
const id = setAdmin.user.id;
return apiCall("get", `/api/users/${id}/shows/${show_id}/edit`)
.then(res => dispatch(load(res)))
.catch(err => dispatch(addError(err.message)));
}
Заранее спасибо за вашу помощь!