如何在beforeCreate函数中发送响应?

时间:2014-10-10 04:03:56

标签: node.js sails.js waterline

当用户尝试将密码设置为小于8个字符的长度时,我想回复406。我正在模型的beforeCreate函数中进行此验证。但是Sails用500和Internal Server Error消息进行响应。无论如何都要访问响应对象并回复我自己的响应?

module.exports = {
  beforeCreate: function (attrs, next) {
    if (attrs.password.length < PASS_MIN_LENGTH) {
      return next({status: 406, message: "Password must be at least 8 characters"});
    }
    next();
  },
 ... // Model definition below
};

1 个答案:

答案 0 :(得分:0)

这取决于你使用的蓝图吗?如果出现错误,您可以将响应设置为调用模型的控制器中的任何内容。如果您使用蓝图,则需要对其进行编辑以满足您的需求。 (在/ api中创建一个蓝图文件夹,并在那里复制风帆蓝图,确保小写的findOne.js,你可以根据需要进行修改)

但你应该知道有验证的地方。

对于此示例,您可以在模型上放置minLength属性。

https://github.com/balderdashy/waterline-docs/blob/master/models.md#validations

或者您也可以创建自定义验证。如果您使用beforeCreate回调因为PASS_MIN_LENGTH是您想要使用的变量,那么您也可以在验证中使用它。