Attempt to provide a unified low level interface to various databases. Currently supports:
- MySql
- PostgreSql
one need to npm install pg / mysql in order to use those implementations
$ npm install db-stuff pg
var dbStuff = require('db-stuff');
var config = {
implementation: 'PostgresDatastore',
connectionString: 'tcp://user:pass@redshift.host:5439/db'
};
dbStuff.create(config, function (err, datastore) {
datastore.query('select * table', function(err, data) {
console.log(err, data);
});
// with params
datastore.query('select * table where x=$1', [1], function(err, data) {
console.log(err, data);
});
datastore.insert('table', { a: 1, b: 2}, function (err) {
})
datastore.update('table', { a: 1, b: 3}, function (err) {
})
datastore.update('table', { a: 1, b: 3}, {id: 1, b:2 } function (err) {
// update record where id = 1 AND b = 2
// this simple filter only supports AND(s)
// for more complex stuff just run query()
})
// with params
datastore.createQuery('select * from table where x=$1', [1], function(err, q) {
q.on('row', function(row) {
});
q.on('error', function(err) {
});
q.on('end', function(results) {
});
});
datastore.createQuery('select * from table', function(err, q) {
...
...
...
});
//reusable/batch insert command
function cb(err) {
console.log(err);
}
var insertCommand = datastore.newInsertCommand('table', ['fieldA', 'fieldB']);
insertCommand.execute([1,2], cb);
// raw strings - will be places directly inside VALUES (...), this is very unsafe though
insertCommand.execute('1,2', cb);
var bulkInsertCommand = datastore.newBulkInsertCommand('table', ['fieldA', 'fieldB'])
bulkInsertCommand.execute([
[1,2],
[3,4],
[5,6]
], cb)
});