To instantiate a structure that automatically throws an error if that is invalid, you can use the buildStrict function.
const { attributes } =require('structure');constUser=attributes({ name: { type: String, required:true, }, age: Number,})(classUser {});constuser=User.buildStrict({ age:'Twenty',});// Error: Invalid Attributes// details: [// { message: '"name" is required', path: ['name'] },// { message: '"age" must be a number', path: ['age'] }// ]
Custom error
Normally buildStrict will throw a default Error when attributes are invalid but you can customize the error class that will be used passing a strictValidationErrorClass to the second parameter of the attributes function.
The value of strictValidationErrorClass should be a class that accepts an array of erros in the constructor.
const { attributes } =require('structure');classInvalidBookErrorextendsError {constructor(errors) {super('Wait, this book is not right');this.code ='INVALID_BOOK';this.errors = errors; }}constBook=attributes( { name: { type: String, required:true, }, year: Number, }, { strictValidationErrorClass: InvalidBookError, })(classBook {});constbook=Book.buildStrict({ year:'Twenty',});// InvalidBookError: Wait, this book is not right// code: 'INVALID_BOOK'// errors: [// { message: '"name" is required', path: ['name'] },// { message: '"year" must be a number', path: ['year'] }// ]