我已经关闭了快捷方式蓝图(/ model / findAll无法工作),现在我想使用REST搜索模型,但我没有找到任何内容,是否有任何文档或我是否必须为此编写自己的视图?
谢谢
在Sails.js中,CRUD和REST蓝图路由已启用开发,但对于生产,我建议您有自己的操作,可以在给定的控制器中查找/创建/更新/删除模型
Sails会自动将控制器中的操作映射到相应的路由,而无需手动配置它们,关闭它:在config / controllers.js文件中将actions标志设置为false
最好用一个例子来解释,所以这里有一个具有一些RESTful路由的基本模型
车型/ user.js的
我们的模型有两个属性,不强制唯一性
module.exports = {
attributes: {
name: 'string',
email: 'string'
}
};
控制器/ 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);
}
});
}
};
配置/ 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'
};
有关更多信息,请务必查看Sails.js中控制器的documentation
只是对上一篇文章的更新,因为我找不到其他人提到这个并且我没有足够的声誉来评论,connections.js
文件已在更新版本的Sails.js中被删除。这些配置选项现在位于blueprints.js
文件中。
使用Promise,ES6和自定义响应更新scott's answer
findAll: function (req, res) {
User.find().then(users => {
res.send(users);
}).catch(() => {
res.badRequest('Error in GET');
});
},
findByName: function(req, res) {
var name = req.param('name');
User.findByName(name).then(users => {
res.send(users);
}).catch(() => {
res.badRequest('Error in GET');
});
},