ReferenceError:在Node / Express App

时间:2018-04-27 15:56:24

标签: node.js express mongoose

我正在努力研究评论/评级网站的“评论”部分。我们有一个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
                        }
                    );
            }
        });
});

1 个答案:

答案 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
    });