如何在Sailsjs中将函数的默认值添加到模型中

时间:2014-09-25 03:22:51

标签: sails.js

这是我的模特

module.exports = {

    attributes: {

        ip: {
            type: 'ip'
        },
        useragent: {
            type: 'text'
        },
        type: 'int'
        }
    }
};

所以我需要的是在创建记录之前我需要从请求中自动填充ip和useragent

这可行吗?

谢谢

2 个答案:

答案 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();
 });
};