Sequelize
是一个关系型数据库ORM框架,它基于Promise构建。支持MySQL、PostgreSQL、MariaDB、SQLite和MSSQL几种关系型数据库,功能非常强大。
安装
安装 sequelize
npm install --save sequelize
安装数据库驱动
根据你所使用的数据库类型,安装以下一个数据库驱动模块:
npm install --save pg pg-hstore // PostgreSQL时安装
npm install --save mysql // MySQL 或 MariaDB 时安装
npm install --save sqlite3 // SQLite 时安装
npm install --save tedious // MSSQL时安装
建立连接
// file: config.json
const config = {
"database": "database",
"username": "username",
"password": "password",
"writeConnection": {
"host": "127.0.0.1",
"port": 3306,
"dialect": "mysql",
"timezone": "+08:00",
"pool": {
"max": 10,
"min": 1,
"idle": 10000
},
"retry": 5
}
};
// file: models/index.js
// 创建连接
const sequelize = new Sequelize(config.database, config.username, config.password, {
// 对象解构
...config.writeConnection,
// 自定义日志
logging: function (message) {
console.debug(message);
}
});
// 导入模型
const fs = require('fs');
const path = require('path');
let db = {};
fs
.readdirSync([模型存放目录: __dirname])
.filter(function (file) {
return (file.indexOf('.') !== 0) && (file !== 'index.js');
})
.forEach(function (file) {
const model = sequelize.import(path.join(__dirname, file))
db[model.name] = model;
});
// 模型关联
Object.keys(db).forEach(function (modelName) {
if ('associate' in db[modelName]) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize
db.Sequelize = Sequelize
module.exports = db
创建模型
// file: models/user.js
module.exports = function (sequelize, DataTypes) {
return sequelize.define('User', {
id: {
type: DataTypes.INTEGER(11),
primaryKey: true,
autoIncrement: true,
allowNull: false,
field: 'id'
},
username: {
type: DataTypes.STRING(20),
allowNull: false,
field: 'username',
unique: 'CI_USERNAME'
},
password: {
type: DataTypes.STRING(200),
allowNull: false,
field: 'password_hash'
}
}, {
tableName: 'users', // 数据库表名
freezeTableName: true,
timestamps: true,
charset: 'utf8',
collate: 'utf8_general_ci',
classMethods: {
associate (models) {
// do something
}
}
});
}
使用
以下是一些简单的查询:
// 查询所有 users
User.findAll().then(users => {
console.log("All users:", JSON.stringify(users, null, 4));
});
// 创建一个新 user
User.create({ firstName: "Jane", lastName: "Doe" }).then(jane => {
console.log("Jane's auto-generated ID:", jane.id);
});
// 删除每个名为 "Jane" 的记录
User.destroy({
where: {
firstName: "Jane"
}
}).then(() => {
console.log("Done");
});
// 修改每个`lastName`为`null`的记录修改为"Doe"
User.update({ lastName: "Doe" }, {
where: {
lastName: null
}
}).then(() => {
console.log("Done");
});
评论