2013-10-08 2 views
0

Я хотел бы выразить sailsjs иметь что-то похожее на рельсы сильного Params т.е.Как я расширяю sails.js библиотеки

req.params.limit ([ «электронная почта», «пароль», «password_confirmation»])

Я создал это уже как добавить, но я хотел бы, чтобы автоматически прикрепляются к Request.Params

Addon:

limit = function(limiters){ 
    params = this.all(); 
    self = Object(); 
    limiters.forEach(function(limiter){ 
    if(params[limiter]){ 
     self[limiter] = params[limiter] 
    } 
    return self; 
} 

reques t:

req.params.limit = limit; 
req.params.limit(["email", "password"]); 

Как я могу добавить это в рамки как модуль?

ответ

1

я думаю, вы могли бы просто создать 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. пример для всех контроллеров/действий. в ссылке выше приведена документация о том, как добавить ее к конкретным действиям.

// config/policies.js 
module.exports.policies = { 
'*': 'limit' 
}; 

EDIT: вы можете позвонить по адресу req.params.limit (...); в вашем контроллере, если вы не хотите, чтобы он был статичным в вашей политике. политика в целом не более, чем экспресс-посредничество

+0

Будет ли передан ответ на контроллер с ограничением, связанным с ним? –

+0

И вот интересная идея охватить его в политике –

+0

да вы можете использовать лимит во всех контроллерах, на которые влияет правило, установленное в ./config/policies.js – snyx

0

Я вижу варианты использования этого для действий контроллера, ограничивая возможные запросы и т. д.

С другой стороны: Если вы просто хотите, чтобы модели не занимать неопределенные атрибуты, найденные в запросе создания вы можете просто установить schema истину для соответствующей модели:

// models/example.js 

module.exports = { 
    schema: true, 
    attributes: {...} 
} 

Установки глобально:

// config/models.js 

module.exports.models = { 
    schema: true, 
    ... 
} 
Смежные вопросы