转载自:http://vicdory.com/node-orm-framework-orm2.html
习惯了Java中的Hibernate,在使用Node时老是写SQL语句很不爽,最近找到了一个比较好用的Node.js ORM框架,名字也很霸气,叫做ORM2,github地址是https://github.com/dresende/node-orm2.
下面举几个ORM2的基本用法,相信看完后就能在Node项目直接使用。
连接数据库
ORM2支持MySQL、PostgreSQL、Amazon Redshift、SQLite四种数据库
var orm = require("orm"); orm.connect("mysql://username:password@host/database", function (err, db) { // ... });
当然规范点应该搞个DB配置文件
var opts = { database: "yourdb", protocol: "mysql", host: "127.0.0.1", username: "root", password: "root", query: { pool: true, }, }; orm.connect(opts, function(err, db) { // ... });
定义Model
ORM最重要的一步应该是定义Model,很简单,在连接MySQL后的回调中使用db定义一个Model类
db.define('User', { name: String, email: String, password: String, }, { id: "uuid", });
在这里可以指定属性的类型、长度、是否可空等选项。
同步数据库
//同步User表 User.sync(function (err) { console.log("done!"); }); //也可以使用db.sync()同步所有表
CRUD操作
定义Model后,增删改查就会很简单的了
//插入数据 User.create([{ name: 'a', email: '[email protected]', password: 'aa', }, { name: 'b', email: '[email protected]', password: 'bb', }], function(err, items) { // pass }); //查找数据 User.find({ name: "admin"}) .limit(3) .offset(2) .only("name", "email") .run(function(err, data) { //非常漂亮的链式风格有木有~~~ //查询name为admin的用户,跳过前2个,保留3个结果而且只需要返回name和email字段 }); //更新、删除数据 //更新db只需调用save即可 SomeOne.save(function(err) { console.log("done!"); }); //删除 SomeOne.remove(function(err) { console.log("done!"); }); //上面的SomeOne实例必须包含了uuid属性。
基本的用法就是这样子了,高级的用法还有Model之间的对应关系,一对多,多对多什么的,可以参考官网的Associations。