2013-10-08 36 views
0

我謹向sailsjs有類似的東西到Rails強PARAMS 即如何擴展sails.js庫

req.params.limit([「電子郵件」,「密碼」,「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; 
} 

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' 
}; 

編輯:當然你可以打電話給req.params.limit(...);在你的控制器中,如果你不希望它在你的策略中是靜態的。政策通常不過是快遞中間件

+0

請求req然後傳遞給控制器​​並附加限制嗎? –

+0

而這是一個有趣的想法,它的範圍在一個策略 –

+0

是的,你可以在受./config/policies.js規則集影響的所有控制器中使用限制 – snyx

0

我看到了這種控制器操作的用例,限制了可能的搜索等等。

在另一方面:如果你只是想你的模型不佔用你可以簡單地設置schema爲true相應的模型創建請求中未定義的屬性:

// models/example.js 

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

全局設置它:

// config/models.js 

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