What objection.js gives you:
- An easy declarative way of defining models and relationships between them
- Simple and fun way to fetch, insert, update and delete objects using the full power of SQL
- Powerful mechanisms for eager loading, inserting and upserting object graphs
- A way to store complex documents as single rows
- Completely Promise based API
- Easy to use transactions
- Official TypeScript support
- Optional JSON schema validation
What objection.js doesn't give you:
- A custom query DSL. SQL is used as a query language.
This doesn't mean you have to write SQL strings though. A query builder based on
knexis used to build the SQL. However, if the query builder fails you for some reason, raw SQL strings can be easily written using the raw helper function.
- Automatic database schema creation and migration from model definitions. For simple things it is useful that the database schema is automatically generated from the model definitions, but usually just gets in your way when doing anything non-trivial. Objection.js leaves the schema related things to you. knex has a great migration tool that we recommend for this job. Check out the example project.
Objection.js uses Promises and coding practices that make it ready for the future. We use Well known OOP techniques and ES2015 classes and inheritance in the codebase. You can use things like async/await using node ">=7.6.0" or alternatively with a transpiler such as Babel. Check out our ES2015 and ESNext example projects.