我正在为我的应用程序使用MEAN堆栈,我的应用程序中的每个问题都有一个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的属性,如果这是您要达到的目的,则不能将其称为问题的属性。
不过,我还没有和猫鼬一起工作过。
关于javascript - TypeError:无法读取均值堆栈中未定义的属性“upvote”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30418242/