我想创建一条动态路线。 我创建了一个名为用户的 API。我需要可以访问/users/:nameofuser,就像自动创建的用户/id。
如何在这种类型的 url 中获取用户名,并执行 Controller 以在数据库中搜索它?
我尝试在 routes.js 中使用这段代码,但它对我不起作用:
'users/:name': 'UserController.getUser',
'users/all/:name': 'UserController.getUser'
我总是收到带有此文本的 404 错误:找不到具有指定 id
的记录。
最佳答案
users/:id
自动路由到 UserController.find
。如果您的 Controller 中不存在此操作,它将使用默认的蓝图操作,这需要一个 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);
});
}
关于javascript - SailsJs 中的动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39593448/