这是我的代码:
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/