这是我的代码:

app.post("/blogs/:id/comments", function (req, res) {
    blog.findById(req.params.id, function (err, finded) {
        if (err) {
            console.log(finded)
            console.log(err);
            console.log("finded data")
            res.redirect("/blogs");
        } else {
            Comment.create(req.body.comment, function (err, comment) {
                if (err) {
                    console.log(comment)
                    console.log(err);
                    console.log("my coomeent")


                } else {
                    finded.comments.push(comment);
                    finded.save();
                    res.redirect("/blogs/" + finded._id);
                }
            })
        }
    })
});


当我第二次尝试插入注释时,代码显示以下错误:


  。(node:6064)UnhandledPromiseRejectionWarning:未处理的承诺
  拒绝(拒绝ID:1):ValidationError:博客验证失败:
  注释:强制转换为[undefined]值失败
  “ [{” _id“:” 5a7dee043918a20128a1e39e“,” text“:” hey“,” author“:” himansu“,” __ v“:0}]”“
  在路径“ comments”(节点:6064)处[DEP0018] DeprecationWarning:未处理
  答应拒绝。将来,承诺会被拒绝
  没有处理的将终止Node.js进程
  非零退出代码。

最佳答案

Himansu,我认为方法finded.comments.push(comment);返回承诺。因此,您必须兑现承诺。喜欢:

finded.comments.push(comment)
.then(result => {
    finded.save();
    res.redirect("/blogs/" + finded._id);
})
.catch(err => {
    console.log(err);
})

关于javascript - 重复执行未处理的 promise 拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48712776/

10-16 18:20