Consider using Massive's successor, monstrous, especially for new development! monstrous applies the same concepts in a fluent query-builder format emphasizing composability and statement reuse, but the API surface is completely different and there is no easy upgrade path. Massive has been stable and very passively developed for years so not much is changing immediately.
I'll continue to help land community contributions for the near but unspecific future; if you've contributed code, reports, or helped others with/posted about using Massive and are interested in maintainership, raise an issue or contact me!
Massive is a data mapper for Node.js that goes all in on PostgreSQL, and embraces the power and flexibility of SQL itself and of the relational metaphor. With minimal abstractions for the interfaces and tools you already use, its goal is to do just enough to make working with your data and your database as easy and intuitive as possible, then get out of your way.
Massive is not an object-relational mapper (ORM)! It doesn't use models, it doesn't track state, and it doesn't box you into working and thinking in terms of individual entities. Massive connects to your database and introspects its schemas to build an API for the data model you already have: your tables, views, functions, and easily-modified SQL scripts.
Here are some of the highlights:
-
Dynamic query generation: Massive's versatile query builder supports a wide variety of operators in a simple criteria object, and can handle everything from complex sorting in
order
to true upserts withonConflict
. - Low overhead: An API built from your schema means direct access to your tables, views, and functions; all the power of SQL loaded from your project's script files; super-simple bulk operations; and no model classes to maintain!
-
Join what you need, when you need it: Call
join()
on any table or view to use Massive's query and even persistence methods over multiple relations at once. - Document storage: PostgreSQL's JSONB data type makes it possible to blend relational and document techniques. Massive makes working with documents as straightforward as possible: objects in, objects out, with the metadata managed for you.
-
Transactions: Use
db.withTransaction()
to execute a callback with full Massive API support in a transaction scope, getting a promise which fulfills if it commits or rejects if it rolls back. - Postgres everything: Many, if not most, relational data access tools are built with compatibility across various relational database management systems in mind. Massive is not. By committing to a single RDBMS, Massive gains support for array fields and operations, regular expression matching, foreign tables, materialized views, and more features found in PostgreSQL but not its competition.
npm i massive --save
Documentation and API docs are at MassiveJS.org.
If you need a callback-based API, install Massive.js v2: npm install massive@2
Documentation for Massive.js 2.x is at readthedocs.