Bookshelf is a JavaScript ORM for Node.js, built on the Knex SQL query builder. It features both Promise-based and traditional callback interfaces, transaction support, eager/nested-eager relation loading, polymorphic associations, and support for one-to-one, one-to-many, and many-to-many relations. Bookshelf aims to provide a simple library for common tasks when querying databases in JavaScript, and forming relations between these objects, taking a lot of ideas from the Data Mapper Pattern. With a concise, literate codebase, Bookshelf is simple to read, understand, and extend. It doesn't force you to use any specific validation scheme, and provides flexible, efficient relation/nested-relation loading and first-class transaction support. It's a lean object-relational mapper, allowing you to drop down to the raw Knex interface whenever you need a custom query that doesn't quite fit with the stock conventions.
Features
- Bookshelf is a JavaScript ORM for Node.js, built on the Knex SQL query builder
- Features both Promise-based and traditional callback interfaces
- Transaction support, eager/nested-eager relation loading
- Polymorphic associations, and support for one-to-one, one-to-many, and many-to-many relations
- It is designed to work with PostgreSQL, MySQL, and SQLite3
- The project is hosted on GitHub, and has a comprehensive test suite