我有一些问题,我无法在网上找到答案。
sails.js框架是否支持HTTP PATCH方法?如果没有 - 有人知道将来是否有计划的功能?
默认情况下,如果我在控制器中创建方法,可以使用GET请求访问它是routes.js文件,我需要指定该方法只能通过POST或其他类型的方法访问?
您如何创建一个策略,允许仅为具有用户的特定权限更改实体上的受保护字段。即:创建实体的用户可以更改“名称”,“描述”字段,但除非用户是ADMIN,否则无法更改“注释”数组?
如何为“find”方法添加自定义标头,该方法指定数据库中有多少项?即:我有/ api / posts /我确实查询了特定项目{skip:20; limit:20}我希望得到这些项目的响应以及与没有SKIP和LIMIT修饰符的查询匹配的项目总数。我想到的一件事是,添加自定义标题的政策将是一个不错的选择,但也许有更好的选择。
有没有办法编写一个在向客户端发送响应之前执行的中间件。即:我只是希望过滤输出JSON而不是包含某些值,或者在不触及控制器方法的情况下添加我自己的值。
提前谢谢
答案 0 :(得分:2)
我可以帮助2和5.根据我自己的经验,这就是我所做的:
2)我通常只是检查控制器中的req.method
。如果这不是我想要支持的方法,我会回复404页面。例如:
module.exports = {
myAction: function(req, res){
if (req.method != 'POST')
return res.notFound();
// Desired controller action logic here
}
}
5)当我想这样做时,我在api / services中创建服务。您可以在接受回调作为参数的服务中定义函数,以便您可以在服务函数完成执行后从控制器发送响应。您可以通过文件名访问任何服务。例如,如果我在api / services中有MyService.js,并且我需要它来处理请求体,我会像这样添加一个函数:
exports.myServiceFunction = function(requestBody, callback){
// Work with the request body and data access here to create
// data to give back to the controller
callback(data);
};
然后,我可以从控制器中使用此服务,如下所示:
module.exports = {
myAction: function(req, res){
MyService.myServiceFunction(req.body, function(data){
res.json(data);
});
}
}
在您的情况下,服务通过回调发送回控制器的数据将是过滤后的JSON。
对不起,我不能回答你的其他问题,但我希望这会有所帮助。我还是Sails.js的新手,并且不断学习新东西,所以其他人可能会有更好的建议。不过,我希望我已经回答了你的两个问题。