不要怂,就是干,撸起袖子干!

custom validators yield an Error instance and error args are transported as is

1 parent 775dd7b8
Showing with 15 additions and 6 deletions
......@@ -10,6 +10,9 @@ var DaoValidator = module.exports = function(model, options) {
this.options = options
}
/** @define {string} The error key for arguments as passed by custom validators */
DaoValidator.RAW_KEY_NAME = '__raw'
DaoValidator.prototype.validate = function() {
var self = this
......@@ -24,13 +27,16 @@ DaoValidator.prototype.validate = function() {
emitter.emit('success')
})
.error(function(err) {
var errors = {}
var error = new Error('Validation error')
error[DaoValidator.RAW_KEY_NAME] = []
Utils._.each(err, function (value) {
Utils._.extend(errors, value)
error[DaoValidator.RAW_KEY_NAME].push(value[DaoValidator.RAW_KEY_NAME])
delete value[DaoValidator.RAW_KEY_NAME]
Utils._.extend(error, value)
})
emitter.emit('success', errors)
emitter.emit('success', error)
})
}).run()
}
......@@ -72,8 +78,11 @@ var validateModel = function() {
var next = function(err) {
if (err) {
var error = {}
error[validatorType] = [err]
var error = {};
error[DaoValidator.RAW_KEY_NAME] = err;
var msg = ((err instanceof Error) ? err.message : err)
error[validatorType] = [msg]
emitter.emit('error', error)
} else {
emitter.emit('success')
......@@ -155,7 +164,7 @@ var prepareValidationOfAttribute = function(value, details, validatorType, optio
try {
details.apply(this.model, callArgs)
} catch(ex) {
return next(ex.message)
return next(ex)
}
if (!isAsync) {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!