我正在使用MEAN堆栈用于我的应用程序,并且我在每个问题的应用程序中都有一个upvote节,试图upvote一个问题TypeError: Cannot read property 'upvote' of undefined
。我的路线文件是这样的:TypeError:无法读取属性'upvote'中的未定义堆栈
routes.js
app.put('/api/questions/:id/upvote', questions.upvoteQuestion);
Question.js(型号)
var questionSchema = mongoose.Schema({
question: {type:String, required:'{PATH} is required!'},
category: [String],
upvotes: {type: Number, default: 0},
comments: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Comment' }],
author: String
});
questionSchema.methods.upvote = function(cb) {
this.upvotes += 1;
this.save(cb);
};
questions.js(控制器)
exports.upvoteQuestion = function(req, res, next) {
req.question.upvote(function(err, question){
if (err) { return next(err); }
res.json(question);
});
};
不太清楚错误是什么。
我对MAN堆栈一无所知,但是我知道angular,express和nodejs。和原因的javascript ;-)错误消息告诉你,该req.question是null或undefined。我不知道足够100%肯定。但我认为猫鼬中间件不能正确地将问题对象添加到请求中。是否有错误日志?或者你忘记添加猫鼬中间件;-)或者猫鼬使用另一个变量req.xyz? –
'req.question'在哪里设置? – mscdex
@mscdex他使用mongose中间件。我假设这个中间件从mongodb中读取一个对象,这个对象是由他提供的id:id来提供的(...。然后这个对象被丰富了questionSchema.methods中定义的方法添加到请求中。通过执行一个console.dir(req);作为函数exports.upvoteQuestion中的第一行 –