Cross compatible SQL query builder for node


(yet another) SQL syntax helper for node.js

npm install [-g] rdbql

All examples have been tested with sqlite3. They should work with MySQL as well, and maybe postgre, but that hasn't been tested yet.

Applications using a RDBMS of some kind quickly get messy when building SQL "from scratch".

function filter(params) {
  var select = "SELECT * FROM t",
      where = [],
      bindings = [];
  for (var key in params) {
    where.push(key + " = ?");
  if (where.length > 0) {
    select += " WHERE " + where.join(" AND ");
  return {"q": select, "params": bindings};

That's a fairly complicated piece of code, to do very little: no validation, supports AND-only filtering, parameter binding syntax is hardwired... Maintaining a DAL this way is not nice at all.

With node-rdbql, the previous example might be written like this:

var sql = require("rdbql").dialect('sqlite3');

function filter(params) { var select = sql.select().from("t"); for (var key in params) { select.where($(key + ' = ?', params[key])); } return {"q": select.toString(), "params": select.params()}; }

... can be found here

  • add wrappers for column definitions in sql.createTable to have compatible SQL between engines
  • test examples with mysql/postgre (and debug as needed)
  • write formal documentation
  • write examples for more cases (expressions, group by, order by, limit, subselects...)
  • make the library usable in the browser