【发布时间】:2026-02-16 16:20:03
【问题描述】:
我正在为我的应用程序使用 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);
});
};
不太清楚是什么错误。
【问题讨论】:
-
我对 MAN 堆栈一无所知,但我知道 angular、express 和 nodejs。和原因的 javascript ;-) 错误消息告诉你,req.question 为空或未定义。我对猫鼬的了解不足以百分百确定。但我假设猫鼬中间件没有正确地将问题对象添加到请求中。有错误日志吗?或者你忘记添加 mongoose 中间件 ;-) 或者 mongoose 使用另一个变量 req.xyz ?
-
req.question设置在哪里? -
@mscdex 他使用 mongose 中间件。我假设这个中间件从 mongodb 中读取一个对象,该对象由他提供的 app.put(... 提供的 :id通过执行 console.dir(req); 作为函数exports.upvoteQuestion 的第一行
标签: javascript node.js mongoose mean-stack