当我尝试访问/ course/new时出现错误[ReferenceError: next is not defined].
我如何以及在哪里为我的断层函数定义下一个?如果我只是next像我在早期模型中所做的那样添加一个参数,我只会得到更多错误.
courseController:
module.exports = {
'new':function(req, res, err){
Student.findOne(req.param('takes'), function foundStudent (err, student){
if (err) return next(err);
if (!student) return next();
res.view({
student: student
});
});
},
create: function(req,res,next){
Course.create(req.params.all(), function courseCreated (err, course){
if(err) next(err);
res.json(course)
});
}
};
Run Code Online (Sandbox Code Playgroud)
课程模式:
module.exports = {
attributes: {
code:{
type: "string"
},
name:{
type:"string"
},
takes:{
model: 'student',
required: true
}
}
};
Run Code Online (Sandbox Code Playgroud)
/course/new.ejs:
<form action="/course/create" method="post">
<h2>Create a new course for <%= student.name %></h2>
<input type="hidden" name="takes" value="<%= student.id%>"/>
<input type="text" placeholder="Course Code" name="code"><br/>
<input type="text" placeholder="Name" name="student"><br/>
<input type="submit" value="Add course"/>
</form>
Run Code Online (Sandbox Code Playgroud)
学生架构:
//A student can have take many courses
module.exports = {
attributes: {
name:{
type: "string",
required: true
},
username:{
type:"string"
},
courses: {
collection: 'course',
via: 'takes'
}
}
};
Run Code Online (Sandbox Code Playgroud)
问题出在这里:
module.exports = {
// you had err here instead of next as last argument
'new':function(req, res, next){
Student.findOne({_id:req.param('takes')}, function foundStudent (err, student){
if (err) return next(err);
if (!student) return next();
res.view({
student: student
});
});
},
create: function(req,res,next){
Course.create(req.params.all(), function courseCreated (err, course){
if(err) next(err);
res.json(course)
});
}
};
Run Code Online (Sandbox Code Playgroud)
对于和我犯同样错误的人来说
我做到了
.get((req, res) => {
Run Code Online (Sandbox Code Playgroud)
代替
.get((req, res, next) => {
Run Code Online (Sandbox Code Playgroud)
我忘记了下一个参数
我解决了。
'new':function(req, res, next){
Student.findOne({id:req.param('student')}, function foundStudent (err, student){
if (err) return next(err);
if (!student) return next();
res.view({
student: student
});
});
},
Run Code Online (Sandbox Code Playgroud)
问题也出在参数类型上。通过将其更改为student实际想要访问的模型而不是takes它所工作的集合。
特别感谢@AJS 的帮助。
| 归档时间: |
|
| 查看次数: |
12910 次 |
| 最近记录: |