如何使用没有快捷方式蓝图的REST使用搜索sails.js模型?

Vis*_*oru 7 rest node.js sails.js

我已经关闭了快捷方式蓝图(/ model/findAll无法工作),现在我想使用REST搜索模型,但我没有找到任何内容,是否有任何文档或我是否必须为此编写自己的视图?

谢谢

sco*_*ott 12

Sails.js中,CRUD和REST蓝图路由已启用开发,但对于生产,我建议您有自己的操作,可以在给定的控制器中查找/创建/更新/删除模型

Sails会自动将控制器中的操作映射到相应的路由,而无需手动配置它们,关闭它:在config/controllers.js文件中将actions标志设置为false

最好用一个例子来解释,所以这里有一个具有一些RESTful路由的基本模型

车型/ user.js的

我们的模型有两个属性,不强制唯一性

module.exports = {

  attributes: {
    name: 'string',
    email: 'string'
  }

};
Run Code Online (Sandbox Code Playgroud)

控制器/ UserController.js

我们的控制器有两个动作,findAll返回所有用户,findByName返回给定名称的用户

module.exports = {

  findAll: function (req, res) {
    User.find().done(function (err, users) {
      if (err) {
        res.send(400);
      } else {
        res.send(users);
      }
    });
  },

  findByName: function(req, res) {
    var name = req.param('name');
    User.findByName(name).done(function (err, users) {
      if (err) {
        res.send(400);
      } else {
        res.send(users);
      }
    });
  }

};
Run Code Online (Sandbox Code Playgroud)

配置/ routes.js

我们的路由配置有两条只响应GET请求的路由,/ user/all将运行findAll操作和/ user/name /:name将运行findByName操作,其名称作为URL中的参数给出

module.exports.routes = {

  'GET /user/all': 'UserController.findAll',
  'GET /user/name/:name': 'UserController.findByName'

};
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请务必查看Sails.js中控制器的文档

  • 我真的不需要关闭休息api - 它可以通过策略控制,不是吗? (4认同)
  • 是的,如果您决定在生产中启用Sails REST API,则可以在**config/policies.js**文件中设置适用于控制器和路由的策略(以及自动生成的路由). (3认同)