我正在努力研究评论/评级网站的“评论”部分。我们有一个mongoose Schema,我正在推动新的评论。
这是架构:
var WorkSchema = new mongoose.Schema({
title: String,
genre: String,
workType: String,
length: Number,
ageRange: String,
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
},
manuscriptText: String,
critiques: [
{
reviewerName: String,
critique: String,
date: {
type: Date,
default: Date.now
}
}
],
ratingNumber: [Number],
ratingSum: {
type: Number,
default: 0
},
date: {
type: Date,
default: Date.now
}
});
当用户提交新评论时,这是后期路线。它正在将批评推向与工作相关的一系列批评(通过在mongodb中搜索确认),但我不断得到一个引用错误,即“批判”未在渲染中定义。我需要重新渲染工作页面,以便审阅者可以看到他们的批评已被添加并显示在前端。不确定为什么会发生这种情况,因为“批评”几乎无处不在。
router.post('/:id', function(req, res) {
Work.findByIdAndUpdate(req.params.id,
{
$push:
{
critiques: {
reviewerName: req.user.username,
critique: req.body.critique
}
}
}, { new: true}).populate('works', 'critiques').exec(function(err, foundWork) {
if (err) {
console.log(err);
} else {
res.render('work',
{
user: foundWork,
title: foundWork.title,
critiques: critiques,
currentUser: req.user,
work: foundWork
}
);
}
});
});
答案 0 :(得分:0)
。
你正在做critiques: critiques,
而critiques
未定义为变量。
现在您有2个选项,首先您可以显示完整的critiques
数组。因为它来自数据库。[可能你可以根据需要对这些数据进行一些操作。]
比如critiques: foundWork.critiques
。
或者你可以只显示你当时插入的数据
critiques : req.body.critiques
如下所示:
从数据库中取出
res.render("work", {
user: foundWork,
title: foundWork.title,
critiques: foundWork.critiques,
currentUser: req.user,
work: foundWork
});
从身体推动当前元素
res.render("work", {
user: foundWork,
title: foundWork.title,
critiques: req.body.critiques,
currentUser: req.user,
work: foundWork
});