Restringindo campos de serem definidos no modelo Sails.js

Então eu tenho um modelo com alguns campos assim:

// ... slug: { type: 'string', required: true, alphanumeric: true, minLength: 3, maxLength: 16 }, loggedinAt: 'date', // ... 

Estou usando a estrutura de projeto do Sails para mapear tudo automaticamente. No entanto, às vezes, tenho campos como loggedinAt que são estritamente internos e não quero que eles possam ser definidos pelo usuário.

Como está, se eu fizer uma solicitação de postagem com o campo loggedinAt , ela será configurada. Como posso restringir isso?

Você pode usar uma política para restringir esse comportamento. Na api / policies / restrictUserCreate.js :

 module.exports = function (req, res, next) { // Check for the "loggedInAt" field in the request if (req.param('loggedInAt')) { return res.badRequest("Nuh uh, you can't set that!"); } return next(); } 

ou, para apenas ignorar certos campos (apenas no Sails v0.10.x), use a lista negra :

 module.exports = function (req, res, next) { // Make sure blacklist object exists, and use existing one if possible, // since this policy could be chained req.options.values = req.options.values || {}; req.options.values.blacklist = req.options.values.blacklist || []; // Add restricted fields to the blacklist req.options.values.blacklist.push('loggedinAt'); return next(); } 

Em seguida, em config / policies.js :

 // Assuming your controller is "UserController" UserController: { create: "restrictUserCreate" }