node学习—Sequelize模型定义与同步

一、入门

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");

如果需要使用外键,可以这样操作:

在这里插入图片描述

博主开始运营自己的公众号啦,感兴趣的可以关注“飞羽逐星”微信公众号哦,拿起手机就能阅读感兴趣的文章啦!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
你可以使用 Node.js 中的 Sequelize 库来建立 MySQL 表模型。首先,确保你已经安装了 Node.js 和 MySQL,并在你的项目中安装了 Sequelize,可以通过运行 `npm install sequelize mysql2` 来安装它们。 下面是一个简单的示例代码,用于建立一个名为 User 的表模型: ```javascript const { Sequelize, DataTypes } = require('sequelize'); // 创建 Sequelize 实例 const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' }); // 定义 User 模型 const User = sequelize.define('User', { // 定义表的列 id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, username: { type: DataTypes.STRING, allowNull: false }, email: { type: DataTypes.STRING, allowNull: false } }, { // 可选的表名,默认为模型名的复数形式 tableName: 'users', // 可选的时间戳字段 timestamps: true }); // 同步数据库,创建表 sequelize.sync() .then(() => { console.log('表已创建'); }) .catch((error) => { console.error('数据库同步错误:', error); }); ``` 在上述代码中,你需要替换数据库名称、用户名和密码等连接信息。接下来,定义了 User 模型,并指定了表的列和其他选项。最后,通过调用 `sequelize.sync()` 方法来同步数据库并创建表。 你可以根据需要修改模型定义,并添加其他关联关系和方法。有关更多详细信息,请参考 Sequelize 的官方文档:https://sequelize.org/。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞羽逐星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值