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