我有一个餐厅模式和一个评论模式。...每当我尝试使用create()方法将评论包含在猫鼬数据库中时,都会产生错误,如下所示:
ObjectParameterError:Document()的参数“ obj”必须是一个对象, 在新的ObjectParameterError上花了很多钱 (/workspace/groomIDE-setup123/restaurants/node_modules/mongoose/lib/error/objectParameter.js:25:11)
我的模式如下:
var restSchema = new mongoose.Schema({
title: String,
review: String,
image: String,
reviews:[{
type:mongoose.Schema.Types.ObjectId,
ref:"Review"
}
]
})
var reviewSchema = new mongoose.Schema({
author:{
id:{
type:mongoose.Schema.Types.ObjectId,
ref:"User"
},
username:String
},
review:String
});
创建新评论并显示它的路线如下:
app.post("/restaurants/:id/reviews",(req,res)=>{
Restaurant.findById(req.params.id,(err,foundRestaurant)=>{
if(err)
console.log(err);
else
Review.create(req.body.comment,(err,newReview)=>{
if(err)
console.log(err);
else{
newReview.author.id=req.user._id;
newReview.author.username=req.user.username;
newReview.save();
foundRestaurant.reviews.push(newReview);
foundRestaurant.save();
// res.redirect("/restaurants/"+req.params.id);
}
})
})
});
app.get("/restaurants/:id",(req,res)=>{
Restaurant.findById(req.params.id).populate("reviews").exec((err,foundRestaurant)=>{
if(err)
console.log(err);
else{
res.render("show",{restaurant:foundRestaurant});
}
})
});
答案 0 :(得分:0)
猫鼬create()
函数需要获取与架构匹配的值。
您可以在这里了解更多信息:https://mongoosejs.com/docs/api.html#model_Model.create
尝试定义新的newReview对象,然后将其推入foundRestaurant.reviews数组,如下所示:
设置新的评论对象:
const newReview={
author.id:req.user._id,
username:req.user.username,
};
创建并保存它:
Review.create(newReview);
,然后将其推入Restaurant.reviews数组:
foundRestaurant.reviews.push(newReview);
希望这很有意义