这是我验证模型的代码 .

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"
   ]
 }