一、入门
1.准备
Sequelize 的使用可以通过 npm
(或 yarn
).
npm install --save sequelize
你还必须手动为所选数据库安装驱动程序:
# 选择以下之一:
$ npm install --save pg pg-hstore # Postgres
$ npm install --save mysql2
$ npm install --save mariadb
$ npm install --save sqlite3
$ npm install --save tedious # Microsoft SQL Server
2.连接数据库
//db.js
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize('myschool', 'root', '123456', {//这里是你的mysql的信息
host: 'localhost',
dialect: "mysql",
logging: null //该属性会省略操作数据库的日志输出,但会是去一些信息,所以后面我没有使用
});
module.exports = sequelize;
//index.js
const sequelize = require("./models/db");
(async function(){
try {
await sequelize.authenticate();
console.log('Connection has been established successfully.');
} catch (error) {
console.error('Unable to connect to the database:', error);
}
})();
运行,连接会短时间等待,发现没有继续连接后结束
3.关闭连接
默认情况下,Sequelize 将保持连接打开状态,并对所有查询使用相同的连接. 如果你需要关闭连接,请调用 sequelize.close()
(这是异步的并返回一个 Promise).
二、模型基础
模型是 Sequelize 的本质. 模型是代表数据库中表的抽象. 在 Sequelize 中,它是一个 Model 的扩展类.
该模型告诉 Sequelize 有关它代表的实体的几件事,例如数据库中表的名称以及它具有的列(及其数据类型).
使用 sequelize.define:
const sequelize = require("./db");
const { DataTypes } = require("sequelize");
const Admin = sequelize.define("Admin", {
loginId: {
type: DataTypes.STRING, //值类型
allowNull: false, //非空,默认为true
},
loginPwd: {
type: DataTypes.STRING,
allowNull: false,
},
});
(async function () {
await Admin.sync({
alter: true //这将检查数据库中表的当前状态(它具有哪些列,它们的数据类型等),然后在表中进行必要的更改以使其与模型匹配.
});
console.log("模型Admin同步完毕!");
})();
module.exports = Admin;
此时回到myschool数据库,发现admins表已经同步完成:
这里还会自动帮我们创建两个值,创建时间和修改时间
如果我们不需要这两个值:
const Admin = sequelize.define("Admin", {
loginId: {
type: DataTypes.STRING,
allowNull: false,
},
loginPwd: {
type: DataTypes.STRING,
allowNull: false,
},
},{
createdAt: false, //如果不填false,可以使用字符值重新命名
updatedAt: false,
});
可以增加一个删除时间的值:
const Admin = sequelize.define("Admin", {
loginId: {
type: DataTypes.STRING,
allowNull: false,
},
loginPwd: {
type: DataTypes.STRING,
allowNull: false,
},
},{
createdAt: false,
updatedAt: false,
paranoid: true //从此以后,该表的数据不会真正的删除,而是增加一列deletedAt,记录删除的时间
});
接下来我们通过重复练习该操作,创建班级表,学生表,书籍表
由于创建多次表,所以我们可以一起使用同步所有的模型:
//sync.js
// 同步所有模型
require("./Admin");
require("./Book");
require("./Class");
require("./Student");
const sequelize = require("./db");
sequelize.sync({ alter: true }).then(() => {
console.log("所有模型同步完成");
});
最后只需要在入口文件导入公共同步模型即可
//index.js
require("./models/sync");
如果需要使用外键,可以这样操作:
博主开始运营自己的公众号啦,感兴趣的可以关注“飞羽逐星”微信公众号哦,拿起手机就能阅读感兴趣的文章啦!