我正在为我的应用程序使用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/

10-12 15:14