SailsJs中的动态路由

时间:2016-09-20 11:57:05

标签: javascript api routes sails.js

我想创建一个动态路线。 我创建了一个名为users的API。我需要可以访问/ users /:nameofuser,就像自动创建的用户/ id。

如何在这种类型的网址中获取用户名,并执行控制器以在数据库中搜索它?

我在routes.js中尝试使用此代码,但它对我不起作用:

'users/:name': 'UserController.getUser',

'users/all/:name': 'UserController.getUser'

我在此文本中始终收到404错误:未找到指定id的记录。

1 个答案:

答案 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);
    });
}