TypeError:无法读取平均堆栈中未定义的属性'upvote'

我正在使用MEAN堆栈为我的应用程序,我有一个upvote部分在我的应用程序的每个问题,试图upvote问题说TypeError: Cannot read property 'upvote' of undefined 。 我的路线文件是这样的:

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

不太确定是什么错误。

你试图把upvotes称为问题的一个属性,如果你改变这个问题:

 question: {type:String, required:'{PATH} is required!', upvotes: {type: Number, default: 0}} 

你可以参考它:req.question.upvote

然后将upvote方法的第二行更改为:

 questionSchema.methods.upvote = function(cb) { this.question.upvotes += 1; this.save(cb); }; 

正如现在所定义的,upvotes是questionSchema的一个属性,如果这就是你所要求的,那么就不能把它作为一个问题的属性。

虽然我没有和mongoose一起工作过。