我想创建一个动态路线。 我创建了一个名为users的API。我需要可以访问/ users /:nameofuser,就像自动创建的用户/ id。
如何在这种类型的网址中获取用户名,并执行控制器以在数据库中搜索它?
我在routes.js中尝试使用此代码,但它对我不起作用:
'users/:name': 'UserController.getUser',
'users/all/:name': 'UserController.getUser'
我在此文本中始终收到404错误:未找到指定id
的记录。
答案 0 :(得分:1)
users/:id
自动路由到UserController.find
。如果控制器中不存在此操作,则它将使用默认蓝图操作,该操作需要ID参数。要解决您的问题,您可以简单地覆盖find方法:
find: function (req, res) {
var name = req.param('id');
User.findOne({name: name}).exec(function(err, user) {
if (err) {return res.serverError(err);}
return res.json(user);
});
}
但是,如果你仍想通过ID获取用户,你应该创建一个额外的路径:
'users/:name': 'UserController.getUser',
和
getUser: function (req, res) {
var name = req.param('name');
User.findOne({name: name}).exec(function(err, user) {
if (err) {return res.serverError(err);}
return res.json(user);
});
}