Any-DB
The less-opinionated Node.js database abstraction layer
Synopsis
Establish a connection:
// Takes an optional callbackvar conn = anyDB
Make queries:
var sql = 'SELECT * FROM questions' // query() returns a readable streamconn // pass a callback to collect resultsconn
Use bound parameters:
sql += ' WHERE answer = ?'conn
Manage database transactions with any-db-transaction:
var begin = var tx = // Can also take a callbacktx // Emitted for unhandled query errorstx // same interface as connections, plus...tx // this tootx // takes an optional callback for errors
Create a connection pool that maintains 2-20 connections:
var pool = anyDB pool // perform a single query, same API as connectionvar tx = // create a transaction with the first available connectionpool // close the pool (call when your app should exit)
Description
The purpose of this library is to provide a consistent API for the commonly used functionality of SQL database drivers, while avoiding altering driver behaviour as much as possible.
Installation
For Applications
npm install --save any-db-{postgres,mysql,sqlite3,mssql}
All of the adapter libraries have any-db
as a peerDependency, which means
that require('any-db')
will work even though you don't install it directly or
add it to your package.json.
For Libraries
Add any-db
to peerDependencies
in package.json. This allows users of your
library to satisfy the any-db dependency by installing the adapter of their
choice.
API
module.exports := { createConnection: (Url, Continuation<Connection>?) => Connection createPool: (Url, PoolConfig) => ConnectionPool} Url := String | { adapter: String } PoolConfig := { min: Number, max: Number, onConnect: (Connection, ((Error) => void) => void reset: (Connection, ((Error) => void) => void} Continuation := (Maybe<Error>, Any) => void
The API of Connection and Query objects is fully described in the
adapter-spec, while Transaction and ConnectionPool objects have
their own documentation. Connections, transactions and pools all have a query
method that behaves consistently between drivers.
Both exported functions require an Url
as their first parameter. This can
either be a string of the form adapter://user:password@host/database
(which
will be parsed by parse-db-url) or an object. When an object is used, it
must have an adapter
property, and any other properties required by the
specified adapters createConnection method.
See also: README for your chosen adapter (MS SQL, MySQL, Postgres, and SQLite3)
License
MIT