【发布时间】:2014-12-10 23:42:33
【问题描述】:
我正在使用 meanjs 的 MEAN 堆栈并有以下路线:
// Teams Routes
app.route('/teams')
.get(teams.list)
.post(users.requiresLogin, teams.create);
app.route('/teams/:teamId')
.get(teams.read)
.put(users.requiresLogin, teams.update)
.delete(users.requiresLogin, teams.delete);
app.route('/teams/:teamId/participants')
.get(teams.teamParticipants);
// Finish by binding the Team middleware
app.param('teamId', teams.teamByID);
这里的问题是,每当我使用此路径访问资源时:
[GET]
http://localhost:3000/teams/547dd53b964b3514294d2dfe/participants
它总是返回 404 状态。当请求到达服务器时,它正在访问
teams.teamByID
来自参数但无法继续:
teams.teamParticipants
我想知道我在定义路线时是否做错了什么,以及是否有更好的方法来定义路线。
提前谢谢你。
编辑
@mscdex
这是我的teamByID
exports.teamByID = function(req, res, next, id) {
Team.findById(id).exec(function(err, team) {
if (err) return next(err);
if (! team) return next(new Error('Failed to load Team ' + id));
req.team = team ;
next();
});
};
【问题讨论】:
-
您的
teams.teamByID是什么样的?你的其他路线有效吗? -
@mscdex 我提供了上面的 teams.teamByID 实现
-
你的
/teams/:teamId路由工作正常吗? -
当
teamByID()到达您获得 404 的路线时,err是否设置或!team为真? -
另外,您可以尝试在使用
:teamId的路线之前移动您的app.param('teamId', teams.teamByID);。
标签: node.js express mean-stack meanjs