我如何扩展sails.js 库 [英] How do I extend sails.js library
问题描述
我想扩展sailsjs来拥有类似于rails strong params的东西即
I would like to extend sailsjs to have something similar to rails strong params i.e.
req.params.limit(["email", "password", "password_confirmation"])
req.params.limit(["email", "password", "password_confirmation"])
我已经创建了它作为附加,但我希望它自动附加到 request.params
I have created this already as an add on, but I would like it to automatically attach to the request.params
插件:
limit = function(limiters){
params = this.all();
self = Object();
limiters.forEach(function(limiter){
if(params[limiter]){
self[limiter] = params[limiter]
}
return self;
}
请求:
req.params.limit = limit;
req.params.limit(["email", "password"]);
我将如何将其作为模块添加到框架中?
How would I go about adding this to the framework as a module?
推荐答案
我认为你可以创建一个 policy
i think you could just create a policy
// policies/limit.js
limit = function(limiters){
params = this.all();
self = Object();
limiters.forEach(function(limiter){
if(params[limiter]){
self[limiter] = params[limiter]
}
return self;
}
module.exports = function limit (req, res, next) {
req.params.limit = limit;
req.params.limit(["email", "password"]);
next();
};
然后您可以在 ./config/policies.js 文件中添加策略.该示例适用于所有控制器/操作.在上面的链接中是关于如何将其添加到特定操作的文档.
then you can add the policy in your ./config/policies.js file. the example is for all controllers/actions. in the link above is the documentation on how to add it to specific actions.
// config/policies.js
module.exports.policies = {
'*': 'limit'
};
当然你可以调用 req.params.limit(...);如果您不希望它在您的策略中保持静态,请在您的控制器中.策略一般无非是表达中间件
of course you can do the call to req.params.limit(...); in your controller if you don't want it static in your policy. policies are in general nothing more than express middlewares
这篇关于我如何扩展sails.js 库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!