В BillForm создайте или отредактируйте задачу и перенаправьте в ShowTodo, а не в ListTodo. - PullRequest
0 голосов
/ 22 февраля 2020

Я новичок здесь, и это мой первый пост.

Мне нужна помощь. Это моя проблема:

Я пытаюсь перенаправить на /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 с загруженными данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...