Mon goose POST-запрос не будет выполнен - PullRequest
1 голос
/ 06 января 2020

У меня проблема с отправкой запроса в MongoDB. Следующий запрос:

router.post("/updateReply/:id", (req, res) => {

    let id = req.params.id;

    CommentReply.findById({id}).then(comment => {
            comment.description = req.body.description;
            comment.save().then(reply => {
                res.json(reply);
            })
            .catch(err => {
                res.status(400).send(err);
            });
        })
        .catch(err => {
            res.status(200).send(err);
        })
}); 

продолжает сбой со следующей ошибкой:

{
    "message": "Cast to ObjectId failed for value \"{ id: '5e137efeb2be3d4408ce374b' }\" at path \"_id\" for model \"commentReplies\"",
    "name": "CastError",
    "stringValue": "\"{ id: '5e137efeb2be3d4408ce374b' }\"",
    "kind": "ObjectId",
    "value": {
        "id": "5e137efeb2be3d4408ce374b"
    },
    "path": "_id"
}

Я понятия не имею, как это исправить, тем более что мои запросы get каждый раз успешно работают:

router.get("/getReply/:id", (req, res) => {
    let id = req.params.id;

    CommentReply.findById(id).then(comment => {
        res.json(comment);
    });       
});

Ответы [ 3 ]

2 голосов
/ 06 января 2020

Не отправляйте объект в findById, отправляйте строку ...

// not ({id})
CommentReply.findById(id)....
0 голосов
/ 07 января 2020

Вы можете использовать findByIdAndUpdate, как показано ниже, в .then () вы можете реализовать обратные вызовы и т. Д. Для обработки ошибок в .catch ()

Подробнее о findByIdAndUpdate можно узнать здесь, https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/

CommentReply.findByIdAndUpdate(req.params.id, {
        comment.description = req.body.description;
})
    .then()
    .catch()

0 голосов
/ 06 января 2020

Вместо CommentReply.findById ({id})

Попробуйте CommentReply.findById (id)

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