在beforeCreate hook中创建验证检查

时间:2015-05-28 19:15:57

标签: sails.js

我有一个user模型,我想添加一些额外的验证。

我正在使用beforeCreate挂钩来做我的检查,但我在找出之后要做的事情时遇到了一些麻烦。

beforeCreate: function(values, callback) {

    UserService.additionalCheck(values, function(err, success){
        if(err){
            return callback(err);
        }
        if(success === true){
            callback();
        }
        else{
            return callback('Did not validate');
        }
    });
}

问题是,这会导致500状态和Error (E_UNKNOWN) :: Encountered an unexpected error

我想要做的就是发送与您拥有' invalidAttribute'时相同的响应,我该如何做到这一点?

TLDR:如何进行自己的无效属性检查和响应?

1 个答案:

答案 0 :(得分:1)

Sails文档涵盖custom validation on attributes。下面的示例来自该文档。使用自定义验证意味着您不需要使用beforeCreate挂钩。

// api/models/foo
module.exports = {

  types: {
    is_point: function(geoLocation) {
      return geoLocation.x && geoLocation.y
    },
    password: function(password) {
      return password === this.passwordConfirmation;
    }
  },
  attributes: {
    firstName: {
      type: 'string',
      required: true,
      minLength: 5,
      maxLength: 15
    },
    location: {
      //note, that the base type (json) still has to be defined
      type: 'json',
      is_point: true
    },
    password: {
      type: 'string',
      password: true
    },
        passwordConfirmation: {
          type: 'string'
    }

  }
}

如果您还喜欢自定义验证消息传递,以及像findOrCreate类型类方法这样的一些Rails,您可以使用Sails Hook Validation包。请注意,它需要Sails 0.11.0 +。