繁体   English   中英

我如何扩展sails.js库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM