[英]How do I extend sails.js library
我想扩展sailsjs,使其具有类似于rails强参数的东西,即
req.params.limit([[“ email”,“ password”,“ password_confirmation”])
我已经创建了这个作为附加组件,但是我希望它能够自动附加到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"]);
我将如何将其作为模块添加到框架中?
我认为您可以制定政策
// 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文件中。 该示例适用于所有控制器/动作。 上方链接中的文档是有关如何将其添加到特定操作的文档。
// config/policies.js
module.exports.policies = {
'*': 'limit'
};
编辑:当然,您可以调用req.params.limit(...); 如果您不希望其在策略中处于静态状态,请在您的控制器中使用。 通常,策略只不过是表达中间件
我在控制器操作,限制可能的搜索等方面看到了用例。
另一方面:如果只希望模型不占用在创建请求中找到的未定义属性,则可以将相应模型的schema
设置为true:
// models/example.js
module.exports = {
schema: true,
attributes: {...}
}
全局设置:
// config/models.js
module.exports.models = {
schema: true,
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.