Skip to content
Promise-based wrapper for node-orm2
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
lib
.gitignore
README.md
package.json

README.md

Promise-based wrapper for node-orm2

This lib supplies promise-returning methods for your habitual node-orm2 objects:

var orm = require('orm');
var qOrm = require('q-orm');

return qOrm.qConnect('mysql://username:password@host/database')
.then(function (db) {

	var Person = db.qDefine("person", {
		name      : String,
		surname   : String,
		age       : Number,
		male      : Boolean,
		continent : [ "Europe", "America", "Asia", "Africa", "Australia", "Antartica" ], // ENUM type
		photo     : Buffer, // BLOB/BINARY
		data      : Object // JSON encoded
	}, {
		methods: {
			fullName: function () {
				return this.name + ' ' + this.surname;
			}
		},
		validations: {
			age: orm.enforce.ranges.number(18, undefined, "under-age")
		}
	});

	return Person.qAll({ surname: "Doe" })
	.then(function (people) {
		// SQL: "SELECT * FROM person WHERE surname = 'Doe'"

		console.log("People found: %d", people.length);
		console.log("First person: %s, age %d", people[0].fullName(), people[0].age);

		people[0].age = 16;
		return people[0].qSave()
		.fail(function (err) {
			console.log(err.stack);
		});
	});
})
.fail(function (err) {
	throw err;
});

##Supported methods

  • qOrm.qConnect, qOrm.qExpress
  • db.qDefine, db.qExecQuery, db.qSync, db.qDrop
  • Model.qCreate, Model.qGet, Model.qOne, Model.qAll, Model.qCount, Model.qHasOne, Model.qHasMany, Model.qFind
  • instance.qSave, instance.qRemove, instance.qValidate
  • instance.qGetAssociatedModel, etc.

##Notes

  • All methods inherit their habitual parameters from their callback-based counterparts. (Behind the scenes, we use Q.nbind.)
  • This is very beta! Works on my application (it's been tested extensively in there), but does not have its own unit tests yet.
  • Features such as orm.enforce, orm.eq, etc. are not wrapped. If you need them (such as in the example), you have to require('orm') as well.

##TODO

  • Tests
  • More examples
  • Better README
You can’t perform that action at this time.