这是我的模特
module.exports = {
attributes: {
ip: {
type: 'ip'
},
useragent: {
type: 'text'
},
type: 'int'
}
}
};
所以我需要的是在创建记录之前我需要从请求中自动填充ip和useragent
这可行吗?
谢谢
答案 0 :(得分:1)
您可以通过在req.options
上设置一些属性,通过Sails policy执行此操作。如果您使用User
模型并使用蓝图create
路线,那么在您的配置/政策中,您将拥有:
UserController: {
create: 'setValues'
}
并在 api / policies / setValues.js :
module.exports = function(req, res, next) {
req.options.values = req.options.values || {};
req.options.values.ip = <SET IP>;
req.options.values.agent = <SET USER AGENT>;
return next();
};
我不记得获取用户IP的首选方式,但this question看起来很有希望。对于用户代理,您可以尝试req.headers['user-agent']
。
如果您使用的是自定义控制器操作而不是蓝图,这仍然可以正常工作,您只需要将通过请求传递的值与req.options.values
合并。
答案 1 :(得分:0)
是的,您可以使用Lifecyclecallbacks(请参阅:http://sailsjs.org/#/documentation/concepts/ORM/Lifecyclecallbacks.html)
执行此操作module.exports = {
attributes: {
ip: {
type: 'ip'
},
useragent: {
type: 'text'
},
},
// Lifecycle Callbacks
beforeCreate: function (values, cb) {
values.ip = <SET IP>
values.useragent = <SET USER AGENT>
cb();
});
};