来自req的数据存储在Comment集合中,但它不存储在Product集合中,我将收到错误消息
app.post("/products/:id/comments", function(req, res) {
//lookup campground using ID
Product.findById(req.params.id, function(err, product) {
if (err) {
console.log(err);
res.redirect("/products");
} else {
Comment.create(req.body.comment, function(err, comment) {
if (err) {
console.log(err);
} else {
console.log("aaaaaa");
product.comments.push(comment);
console.log("bbbbbb");
product.save();
console.log("cccccc");
res.redirect('/products/' + product._id);
}
});
}
});});
以下是产品
var mongoose = require("mongoose"),
productSchema = new mongoose.Schema({
name: String,
img: String,
price: Number,
desc: String,
comments: [{
type: mongoose.Schema.Types.ObjectId,
ref: "Comment"
}],
created: {
type: Date,
default: Date.now()
}});module.exports = mongoose.model("Product", productSchema);
这是评论模式
var mongoose = require("mongoose"),
commentSchema = mongoose.Schema({
text: String,
author: String
});module.exports = mongoose.model("Comment", commentSchema);
我得到了以下输出: -
所以它存储在commentSchema中,但它不存储在product.comments中,当我运行也重定向到products /:id的网站时,我缺少将注释存储到数据库中的内容?
答案 0 :(得分:0)
如果您没有将回调函数传递给 save(),那么它将返回一个承诺。
因此,您收到错误,因为您没有添加 catch 。
尝试将回调传递给 save():
// ...
product.save(function(err, result) {
if (err) {
// Handle error
}
console.log("cccccc");
res.redirect('/products/' + product._id);
})