如何在消息中抛出tv4错误

How do I throw a tv4 error with a message?

本文关键字:tv4 错误 消息      更新时间:2023-09-26

下面的数据架构中有一个错误,并且存在一个未通过验证的测试对象。我可以抛出错误,但没有错误消息。

var tv4 = require('tv4')
var schema = {
 "items": {
   "type": "boolean"
 }
}
tv4.setErrorReporter(function (error, data, schema) {
  return "Custom error message"
})
var data1 = [true, false]
var data2 = [true, 123]
console.log(tv4.validate(data1, schema))
if (tv4.error) throw tv4.error
console.log(tv4.validate(data2, schema))
if (tv4.error) throw tv4.error

该消息仍然没有错误消息。

Error
    at new ValidationError (/project/node_modules/tv4/tv4.js:1461:12)
    at ValidatorContext.createError (/project/node_modules/tv4/tv4.js:359:14)
    at ValidatorContext.validateType (/project/node_modules/tv4/tv4.js:751:14)
    at ValidatorContext.validateBasic (/project/node_modules/tv4/tv4.js:721:19)
    at ValidatorContext.validateAll (/project/node_modules/tv4/tv4.js:599:19)
    at ValidatorContext.validateArrayItems (/project/node_modules/tv4/tv4.js:947:21)
    at ValidatorContext.validateArray (/project/node_modules/tv4/tv4.js:880:11)
    at ValidatorContext.validateAll (/project/node_modules/tv4/tv4.js:602:11)
    at Object.api.validate (/project/node_modules/tv4/tv4.js:1573:24)
    at Object.<anonymous> (tv4-test.js:20:17)

如何将无效架构与消息一起抛出?

谢谢你,这几乎节省了我一半的lyf:),谢谢大家对于其他人,总是使用这3行进行模式测试:

  console.log(" Schema Valid " +JSON.stringify(tv4.validate(jsonData ,schema)));
  console.log("Validation errors: "+ tv4.error);
  console.log(tv4.error.dataPath); 

输出将类似于:

LOGGS

false
Validation errors: ValidationError: Invalid type: string (expected integer)
/guardVerificationUrl

此外,如果你想知道什么类型的错误使用:

console.log(tv4.error.schemaPath); 

输出:

/properties/guardVerificationUrl/type