Я новичок здесь, и это мой первый пост.
Мне нужна помощь. Это моя проблема:
Я пытаюсь перенаправить на /todos/:id/show
не '/ todos'. Когда я пытаюсь создать задачу, я вижу следующую ошибку: Внутренняя ошибка сервера 500.
Мне не нужно исправлять метод post в задачах контроллера. Это метод post mon goose:
app.post('/api/todos, async (req, res) => {
const { name, description, isDone, createdAt, updatedAt} = req.body;
const todo = new Todo({
name,
description,
isDone,
createdAt: moment(createdAt).format('MM-DD-YYYY HH:mm:ss'),
updatedAt: moment(updatedAt).format('MM-DD-YYYY HH:mm:ss')
});
try {
let newTodo = await todo.save();
res.status(201).send(newTodo);
} catch (err) {
if (err.name === 'MongoError') {
res.status(409).send(err.message);
}
res.status(500).send(err);
}
});
И это новый Todo.jsx, где ошибка. Здесь я пытаюсь получить идентификатор задачи от todo, отправленного из api rest.
class NewTodo extends Component {
state = {
redirect: false
};
componentDidMount() {
this.props.newTodo();
}
todoId = null;
//In the following lines have to do much lines. I need to get todo if from api rest.
submit = todo => {
return this.props
.saveTodo(todo)
.then(response => {
console.info(response);
this.todoId = response._id;
this.setState({ redirect: true });
})
.catch(err => {
throw new SubmissionError(this.props.errors);
});
};
render() {
return (
<div>
<h2>New Todo</h2>
{this.state.redirect ? (
<Redirect to ={'/todos/' + this.todoId + '/show'} />
) : (
<TodoForm todo={this.props.todo} onSubmit={this.submit} />
)}
</div>
);
}
}
function mapStateToProps(state) {
return {
todo: state.todosDs.todo,
errors: state.todosDs.errors
};
}
export default connect(
mapStateToProps,
{ newTodo, saveTodo}
)(NewTodo);
Я хотел бы знать, как я могу решить эту проблему.
Когда я нажимаю на новый todo и сохраните его, перенаправляет меня в ShowTodo из загруженных данных и не получает идентификатор todo из api rest. Вместо этого я вижу / todos / undefined / show, например, / todos / q8u4843294 / show с загруженными данными.