Validator: add more information when exception is thrown in verifyStep
This commit is contained in:
parent
9709aa1d46
commit
66ec3c0b47
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "wms-core",
|
"name": "wms-core",
|
||||||
"version": "0.20.5-rc.2",
|
"version": "0.20.5-rc.3",
|
||||||
"description": "Node web application framework and toolbelt.",
|
"description": "Node web application framework and toolbelt.",
|
||||||
"repository": "https://gitlab.com/ArisuOngaku/wms-core",
|
"repository": "https://gitlab.com/ArisuOngaku/wms-core",
|
||||||
"author": "Alice Gaudon <alice@gaudon.pro>",
|
"author": "Alice Gaudon <alice@gaudon.pro>",
|
||||||
|
@ -2,6 +2,7 @@ import Model from "./Model";
|
|||||||
import ModelQuery, {WhereTest} from "./ModelQuery";
|
import ModelQuery, {WhereTest} from "./ModelQuery";
|
||||||
import {Connection} from "mysql";
|
import {Connection} from "mysql";
|
||||||
import {Type} from "../Utils";
|
import {Type} from "../Utils";
|
||||||
|
import {ServerError} from "../HttpError";
|
||||||
|
|
||||||
export default class Validator<T> {
|
export default class Validator<T> {
|
||||||
private readonly steps: ValidationStep<T>[] = [];
|
private readonly steps: ValidationStep<T>[] = [];
|
||||||
@ -27,8 +28,17 @@ export default class Validator<T> {
|
|||||||
for (const step of this.steps) {
|
for (const step of this.steps) {
|
||||||
if (onlyFormat && !step.isFormat) continue;
|
if (onlyFormat && !step.isFormat) continue;
|
||||||
|
|
||||||
const result = step.verifyStep(value, thingName, connection);
|
let result;
|
||||||
if ((result === false || result instanceof Promise && (await result) === false) && step.throw) {
|
try {
|
||||||
|
result = step.verifyStep(value, thingName, connection);
|
||||||
|
if (result instanceof Promise) {
|
||||||
|
result = await result;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
throw new ServerError(`An error occurred while validating ${thingName} with value "${value}".`, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result === false && step.throw) {
|
||||||
const error: ValidationError = step.throw();
|
const error: ValidationError = step.throw();
|
||||||
error.rawValueToHuman = this.rawValueToHuman;
|
error.rawValueToHuman = this.rawValueToHuman;
|
||||||
error.thingName = thingName;
|
error.thingName = thingName;
|
||||||
|
Loading…
Reference in New Issue
Block a user