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 {});var user =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 {});var book =Book.buildStrict({ year:'Twenty'});// InvalidBookError: Wait, this book is not right// code: 'INVALID_BOOK'// details: [// { message: '"name" is required', path: 'name' },// { message: '"year" must be a number', path: 'year' }// ]