title: ORM庫 Sequelize 簡單使用小結
date: 2019-01-21 22:12:50
tags: [Node.JS]
categories: Node.JS
什么是 ORM 庫
先說一下數(shù)據(jù)庫则涯,比如 MySQL 就是奄喂。我們可以使用現(xiàn)成的 MySQL 模塊來操作數(shù)據(jù)庫姥敛,但需要寫 SQL 語句來操作數(shù)據(jù)庫撑帖,比較麻煩桩卵。
所以就有人封裝了 ORM 庫,就像一個隔離層一樣讹语,我們只需要調用某個語法比如 Note.create()
售担,它的底層就會自動生成對應的 SQL 語句。
而 Sequelize 就是一個 ORM 庫辫愉。
另外栅受,像 MongoDB 和 Mongoose 也是類似的關系。
安裝并引入
安裝
$ npm install --save sequelize
// 此處也可選擇安裝mysql或其他恭朗,本文以sqlite為例
$ npm install --save sqlite3
引入
const Sequelize = require('sequelize')
const path = require('path')
建立數(shù)據(jù)庫
const sequelize = new Sequelize('database', 'username', 'password', { // 這三個參數(shù)也可填 undefined
host: 'localhost', // 數(shù)據(jù)庫地址
dialect: 'sqlite', // 數(shù)據(jù)庫類型
pool: {
max: 5, // 連接池最大連接數(shù)量
min: 0, // 連接池最小連接數(shù)量
acquire: 30000, // 在拋出錯誤前嘗試連接的最大時間為30秒
idle: 10000 // 如果一個線程超過10秒鐘沒有被使用過就釋放該線程
},
// 只有用 SQLite 時要配置此項
storage: path.join(__dirname, '../database/database.sqlite') // 假如該目錄下沒有該文件屏镊,會自動創(chuàng)建
});
測試連接
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
運行該文件node test.js
,連接成功則會 log 成功痰腮。
創(chuàng)建 Model
// 創(chuàng)建 Model
const Note = sequelize.define('note', { // 表名為 note
text: { // 字段名
type: Sequelize.STRING // 字段類型
}
})
// 創(chuàng)建或同步表
// User.sync() 會返回一個 Promise 對象
// force = true 時會把存在的表先 drop 掉再創(chuàng)建
Note.sync({force: true})
// 現(xiàn)在就可以增刪改查了
增刪改查
// 增
Note.create({
text: 'hello'
})
// 查
Note.findAll({raw: true, where: {id: 1}}).then(notes => {
console.log(notes)
})
小結
至此而芥,一個基本的數(shù)據(jù)庫就完成了。更多用法還是得參考 Sequelize 的官方文檔膀值。