Model ─ Sequelize
Sequelize 是 Node.js 、 io.js 的一種 ORM(Object Relational Mapping),ORM 中文稱作「物件關係對映」 意思是可以把物件轉換成不同資料庫語言的方法,舉例來說如果使用 MySQL 就要會 MySQL 的資料庫語法,換成 MSSQL 就又要學 MSQQL 資料庫語法,會造成每種版本資料庫都會有不同的寫法,因此 ORM 的好處就是可以只需一種寫法,可以自動幫你轉換成不同資料庫版本的語法, 且也可避免網頁工程師直接對資料庫進行操作,降低了物件導向與資料庫之間的耦合關係。
Sequelize 目前支援 PostgreSQL、MySQL、MariaDB、SQLite、MSSQL 。
安裝
npm install sequelize --save
使用
- 引用
sequelize
建立了一個 User 資料表,內有兩個欄位 username ,birthday 資料型態分別是字串與時間:
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('User', {
firstName: Sequelize.STRING,
lastname: Sequelize.STRING,
status: Sequelize.BOOLEAN
});
常用的資料型態:
- Sequelize.STRING — 字串(可變動的長度字串)
- Sequelize.CHAR — 字串(固定的長度字串)
- Sequelize.TEXT — 字串(用來儲存大量的字元資料)
- Sequelize.INTEGER — 數字
- Sequelize.FLOAT — 浮點數
- Sequelize.BOOLEAN — 布林值
...等等,資料庫型別還有非常多種,其他可參考 Sequelize DataTypes 。
建立資料表,新增資料:
force 參數:如果 table 存在則刪除(Drop) 並建立新的 table。
User.sync({force: true}).then(function () {
User.create({
firstName: 'Caesar',
lastName: 'Chi',
status: false
});
});
檢索資料(find):
User.findById(id);
User.findAll();
刪除資料(destroy):
User.destroy({ where: { id: 1 }}); // 使用條件篩選
User.destroy(user); // 直接帶入 user 物件
修改資料(update):
var user = User.findById(id);
user.status = true;
user.save();
// 或是
User.update({
status: true,
}, {
where: {id: 12} // 要修改資料的 id
});
條件篩選(where):
User.findAll({
where: {
id: 2
}
});
// SELECT * FROM user WHERE id = 2
User.findAll({
where: {
id: 12,
status: true
}
});
// SELECT * FROM user WHERE id = 12 AND status = 'active';
User.destroy({
where: {
status: true
}
});
// DELETE FROM user WHERE status = true;
User.update({
status: false,
}, {
where: {
id: 12
}
});
// UPDATE user SET status = false WHERE id = 12;