node.js后端之sequelize
簡單來說,node.js是運行在后端的javascript,后端肯定需要訪問數據庫,而今天我們要介紹的對象就是可以讓你不用再痛苦的寫sql語句,提高效率的ORM框架——sequelize。
准備工作
安裝
首先新建一個文件夾sequelize_demo,打開終端(默認已經有node環境),輸入npm init,這會初始化此文件夾並生成一個.json文件,一路回車默認即可。
接下來安裝express框架:
$ npm install express --save
然后安裝sequelize框架和mysql驅動:
$ npm install --save sequelize
$ npm install --save mysql2
ok,安裝完成
創建文件
解析來創建我們需要用到的文件,文件目錄如下~

連接數據庫
接下來開始數據庫的連接,打開db.js
//db.js
var Sequelize = require('sequelize');
//四個參數分別是 數據庫名稱,用戶名,密碼,配置
module.exports = new Sequelize('farmer', 'root', '123456', { //換成自己的數據庫
host: 'localhost', // 數據庫地址
dialect: 'mysql', // 指定連接的數據庫類型
pool: {
max: 5, // 連接池中最大連接數量
min: 0, // 連接池中最小連接數量
idle: 10000 // 如果一個線程 10 秒鍾內沒有被使用過的話,那么就釋放線程
}
});
模型文件user.js,這個模型用來和數據庫里的表對應,一個模型就代表一個表格,我們編寫好模型,可以讓sequelize為我們自動創建數據庫表,非常方便。使用define函數來創建模型
// user.js
var Sequelize = require('sequelize');
var sequelize = require('./db');
// 創建 model
const User = sequelize.define('user', {
userName: {
type: Sequelize.STRING, // 指定值的類型
field: 'user_name' // 指定存儲在表中的鍵名稱
},
// 沒有指定 field,表中鍵名稱則與對象鍵名相同,為 email
email: {
type: Sequelize.STRING
}
}, {
// 如果為 true 則表的名稱和 model 相同,即 user
// 為 false MySQL創建的表名稱會是復數 users
// 如果指定的表名稱本就是復數形式則不變
freezeTableName: false
});
//如果不存在就創建此表
var user = User.sync({ force: false });
// 添加新用戶
exports.addUser = function(userName, email) {
// 向 user 表中插入數據
return User.create({
userName: userName,
email: email
});
};
然后進入終端,啟動服務 node app.js,打開數據庫會發現已經有表格創建好了。最后的createdAt和updatedAt是sequelize自動添加的,當然不想要可以這樣:
// 不要添加時間戳屬性 (updatedAt, createdAt)
timestamps: false,

接下來編寫測試函數testUser.js,這里我們就可以愉快的使用sequelize封裝好的函數來操作啦,和sql語句說拜拜!
常用的函數如 find,findAll,create,詳細可看官方文檔https://sequelize.org/v5/manual/models-usage.html
//testUser.js
var user = require('./user'); //引入模型
// 添加用戶
user.addUser('jack', 'jack@163.com').then(function() {
// 查詢新添加的用戶
return user.findOne({ where: { user_name: userName }})
}).then(function(user) {
console.log('****************************');
console.log('user name: ', user.userName);
console.log('user email: ', user.email);
});
進入終端,運行testUser
node testUser.js

打開數據庫就會發現數據已經插入到數據庫中了~
