这是我验证模型的代码 .
const loopback = require('loopback');
const {connectors, getDsnFormRules} = require('../../common/dsn');
const validator = require('indicative');
function validateConnectionPar(err, done) {
Promise.resolve().then(() => validator.validateAll(this, rules)
.then(result => done())
.catch(error => {
err(new Error(JSON.stringify(error)));
done();
});
}
module.exports = (Dsn) => {
Dsn.validateAsync('dsn', validateConnectionPar, {message: 'connection par are invalid'});
};
我正在使用指示性库来进行验证 . 要验证的对象具有如下结构:
rules: {
'connector': 'required|string',
'dsnParams.host': 'required|string',
'dsnParams.port': 'required|integer|range:0,65536',
'dsnParams.username': 'required|string',
'dsnParams.password': 'required|string',
}
如果有错误,我会收到如下回复:
{
"error": {
"statusCode": 422,
"name": "ValidationError",
"message": "The `dsn` instance is not valid. Details: `dsn` is invalid (value: undefined).",
"details": {
"context": "dsn",
"codes": {
"dsn": [
"custom.Error: [{\"field\":\"dsnParams.host\",\"validation\":\"required\",\"message\":\"required validation failed on dsnParams.host\"},{\"field\":\"dsnParams.port\",\"validation\":\"range\",\"message\":\"dsnParams.port must be in the range 0 to 65536 exclusive\"}]"
]
},
"messages": {
"dsn": [
"is invalid"
]
}
},
"stack": "ValidationError: The `dsn` instance is not valid. Details: `dsn` is invalid (value: undefined).\n at /home/bala/IRIS/Beginning/iris/node_modules/loopback-datasource-juggler/lib/dao.js:355:12\n at ModelConstructor.<anonymous> (/home/bala/IRIS/Beginning/iris/node_modules/loopback-datasource-juggler/lib/validations.js:577:13)\n at ModelConstructor.next (/home/bala/IRIS/Beginning/iris/node_modules/loopback-datasource-juggler/lib/hooks.js:93:12)\n at done (/home/bala/IRIS/Beginning/iris/node_modules/loopback-datasource-juggler/lib/validations.js:574:25)\n at /home/bala/IRIS/Beginning/iris/node_modules/loopback-datasource-juggler/lib/validations.js:652:7\n at Promise.resolve.then.then.catch.error (/home/bala/IRIS/Beginning/iris/server/models/dsn.js:17:7)\n at runMicrotasksCallback (internal/process/next_tick.js:58:5)\n at _combinedTickCallback (internal/process/next_tick.js:67:7)\n at process._tickCallback (internal/process/next_tick.js:98:9)"
}
}
当我向err()函数返回一个新的Error对象时,这些错误在代码中显示为custom.Error . Is there a way to obtain them as list of messages in
"messages": {
"dsn": [
"is invalid"
]
}
就像是 :
"messages": {
"dsn": [
"port": "is invalid",
"host": "required validation failed on dsnParams"
]
}