Easy to extend, configure or override, owing to ES6 classes.
Including validation for JSON fields, similar to Mongoose.js.
Allows sharing customisations.Also supports custom plugins.
Including callback-based and procedural transactions.
Implemented through SQL joins.
With support for `async` gettters(suitable for GraphQl for instance).
Before save(insert or update) and after fetch operations.
Custom error classes for all errors, including database errors.
Extensive test coverage, plugins included.