導言
現在Node.js 上面的關系數據庫ORM 框架有
其中以sequelize的關注度最高…因為,當初,我就是看着sequelize 的star 數最高..於是就入坑了..對了,國內的話,前端亂燉的數據庫ORM用的就是sequelize
<!--more-->
Sequelize 歷史
對於我來說從2013年初到現在 接觸sequelize應該有接近一年了..在這過去一年里sequelize的進步還是挺大的….在以前的版本.sequelize 對於關聯表關系有着一些異常奇異的問題,這也導致,后邊sequelize 的幾個作者,下定決心做好單測…有興趣的朋友可以去圍觀一下sequelize的單元測試,就現在而言,sequelize應該可以算能用了,所以,也決定寫些東西推廣一下sequelize,讓一些人更加方便的入坑…
在sequelize開發歷史中,在1.7 的時候,開了一個2.0 的分支,這兩個分支的關系,可能有些人就混亂了,這里說一下,1.7 和 2.0 的版本是同步開發的,在1.7 正式出來的時候,1.7 和 2.0 的代碼是一樣的.不過,現在1.7已經正式發布,1.7和2.0 可能開始不同步了,所以,大家為了省事還是用1.7吧,至於2.0什么時候開發完..我估計得今年年底吧.
Let’s start!
先安裝一下sequelize 的命令行工具,方便一些初始化工作
Windows
npm install -g sequelize
*nixsudo npm install -g sequelize
安裝完以后,我們之間在項目目錄運行
sequelize -i
配置文件就會自動幫我們生成好了
├───config
└───migrations
config 目錄下的config.json 就是我們需要根據數據的配置進行修改的文件了
接下來我們安裝用到的包
npm install sequelize --save npm install sqlite3 --save npm install mysql --save
sequelize 是支持多方言數據庫(MySQL, MariaDB, SQLite and PostgreSQL)的ORM 框架.其中對於MariaDB 的支持..貌似就這一家了(不過用MariaDB應該不多吧).
為了展示sequelize 對於多數據庫的支持,我使用兩個不同的數據庫生產環境用mysql,測試開發用sqlite3.
然后去修改 config/config.json
"development": { "username": null, "password": null, "database": "database_development", "option" : { "dialect": "sqlite", "storage": "test.sqlite", "define": { "timestamps": false, "freezeTableName": true } } }
對於sqlite3而言,直接把dialect 改為sqlite即可,如果是MySQL的,注意username,password,database一個都不能少!
對於define 里面的東西.這里先演示兩個. timestamps 對於表是否自動添加createAt 和 updateAt這兩個字段,如果你用不上的話,就關掉吧. freezeTableName, 是凍結表名,默認sequelize會幫你的定義的表名字自動加上s..所以,如果你用不上的話,就關掉吧.關於更多的配置請看http://sequelizejs.com/docs/latest/usage#options
Let’s run!
做了這么一番准備,現在開始讓我們開始用sequelize進行數據庫訪問吧!
var Sequelize = require('sequelize'); var node_env = process.env.NODE_ENV ? process.env.NODE_ENV : 'development'; //根據系統環境載入我們的配置 var config = require('../config/config')[node_env]; var dbStroage = new Sequelize(config.database, config.username, config.password, config.option); //定義我們的User 表 var User = dbStroage.define('user', { username: Sequelize.STRING, password: Sequelize.STRING }) //如果是第一次運行的話,需要用sync 方法創建表 dbStroage.sync() .success(function () { //用sequelize創建我們第一個用戶 User.create({ username : 'youxiachai', password : '123456' }).done(function (err, result){ console.log(err) console.log(result) }) }) .error(function (err){ console.log(err); })
對於sequelize的配置運行,就到此結束了,下次我們討論一下如何用sequelize 做一個Restful風格的應用.