From 794ff7ca2dcf221640ab6a612c7d26d21496992a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=99=E6=A2=A6=E5=A9=B7?= <3410849650@qq.com> Date: Sat, 6 Apr 2024 21:45:59 +0800 Subject: [PATCH] 4.6 --- .../\347\254\224\350\256\260.md" | 23 +++++ .../\347\254\224\350\256\260.md" | 83 +++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 "\344\275\231\346\242\246\345\251\267/Note/20240401-Sequelizs/\347\254\224\350\256\260.md" create mode 100644 "\344\275\231\346\242\246\345\251\267/Note/20240402-Sequelize\346\250\241\345\235\227/\347\254\224\350\256\260.md" diff --git "a/\344\275\231\346\242\246\345\251\267/Note/20240401-Sequelizs/\347\254\224\350\256\260.md" "b/\344\275\231\346\242\246\345\251\267/Note/20240401-Sequelizs/\347\254\224\350\256\260.md" new file mode 100644 index 0000000..6a10936 --- /dev/null +++ "b/\344\275\231\346\242\246\345\251\267/Note/20240401-Sequelizs/\347\254\224\350\256\260.md" @@ -0,0 +1,23 @@ +## Sequelizs安装 +在命令行中导航到你的项目目录。 +运行以下命令来安装Sequelize和它的依赖:npm install sequelize +如果使用的是MySQL数据库,还需要安装mysql2驱动程序。运行以下命令:npm install mysql2 +## 连接到数据库 +```js +//推荐方法 +import { Sequelize } from 'sequelize'; +//这里数据库为myData,用户名为postgres +const sequelize = new Sequelize('mydata', 'postgres', 'password', { + host: 'localhost', + dialect: /* one of 'mysql' | 'postgres' | 'sqlite' | 'mariadb' | 'mssql' | 'db2' | 'snowflake' | 'oracle' */ +}); +``` +## 测试连接 +```js +try { + await sequelize.authenticate(); + console.log('连接成功'); +} catch (error) { + console.error(error); +} +``` \ No newline at end of file diff --git "a/\344\275\231\346\242\246\345\251\267/Note/20240402-Sequelize\346\250\241\345\235\227/\347\254\224\350\256\260.md" "b/\344\275\231\346\242\246\345\251\267/Note/20240402-Sequelize\346\250\241\345\235\227/\347\254\224\350\256\260.md" new file mode 100644 index 0000000..cb6478e --- /dev/null +++ "b/\344\275\231\346\242\246\345\251\267/Note/20240402-Sequelize\346\250\241\345\235\227/\347\254\224\350\256\260.md" @@ -0,0 +1,83 @@ +## 概念 +Sequelize是一个基于JavaScript的ORM(对象关系映射)库,用于在Node.js应用程序中进行数据库操作。它支持多种数据库系统,如MySQL、PostgreSQL和SQLite。 + +## 模型定义 +在Sequelize中,模型定义是指定义一个JavaScript对象,该对象对应数据库中的一个表。通过定义模型,可以使用面向对象的方式来操作数据库表。 +下面是一个示例,展示如何使用Sequelize定义一个模型: +```js +const { Sequelize, DataTypes } = require('sequelize'); +const sequelize = new Sequelize('database', 'username', 'password', { + host: 'localhost', + dialect: 'mysql' +}); + +// 定义模型 +const User = sequelize.define('User', { + // 定义表的字段 + firstName: { + type: DataTypes.STRING, + allowNull: false + }, + lastName: { + type: DataTypes.STRING, + allowNull: false + }, + age: { + type: DataTypes.INTEGER, + allowNull: false + } +}); + +// 同步模型到数据库 +sequelize.sync() + .then(() => { + console.log('模型已同步到数据库'); + }) + .catch((error) => { + console.error('同步模型到数据库时出错:', error); + }); +``` +在上面的示例中,首先创建了一个Sequelize实例,并配置了数据库连接信息。然后使用sequelize.define方法定义一个名为"User"的模型,该模型对应数据库中的一个名为"users"的表。模型中定义了三个字段:firstName、lastName和age。每个字段都有一个类型和一个是否允许为空的属性。 +最后,通过调用sequelize.sync()方法,将定义好的模型同步到数据库中。如果数据库中不存在对应的表,则会自动创建该表。同步完成后,会输出一条成功的消息。 +这只是一个简单的示例,Sequelize还提供了更多的功能和选项,用于定义模型的关联关系、数据验证、钩子函数等。可以查阅Sequelize的官方文档以了解更多信息。 +## 模型同步 +在Sequelize中,模型同步是指将定义好的模型与数据库中的表进行同步,即创建或更新数据库中的表结构以匹配模型的定义。 +Sequelize提供了一个sequelize.sync()方法用于执行模型同步操作。这个方法会根据模型的定义自动创建或更新数据库中的表。 +以下是一个示例,展示如何使用sequelize.sync()方法进行模型同步: +```js +const { Sequelize, DataTypes } = require('sequelize'); +const sequelize = new Sequelize('database', 'username', 'password', { + host: 'localhost', + dialect: 'mysql' +}); + +// 定义模型 +const User = sequelize.define('User', { + firstName: { + type: DataTypes.STRING, + allowNull: false + }, + lastName: { + type: DataTypes.STRING, + allowNull: false + }, + age: { + type: DataTypes.INTEGER, + allowNull: false + } +}); + +// 同步模型到数据库 +sequelize.sync() + .then(() => { + console.log('模型已同步到数据库'); + }) + .catch((error) => { + console.error('同步模型到数据库时出错:', error); + }); +``` +在上面的示例中,首先创建了一个Sequelize实例,并配置了数据库连接信息。然后使用sequelize.define方法定义了一个名为"User"的模型。 +最后,通过调用sequelize.sync()方法,将定义好的模型同步到数据库中。如果数据库中不存在对应的表,则会自动创建该表。如果数据库中已存在同名的表,但与模型的定义不一致,则会更新表的结构以匹配模型的定义。 +在模型同步过程中,Sequelize会根据模型的定义创建或更新表结构,并添加相应的字段、索引和约束。它还会根据字段的数据类型和属性自动选择合适的数据库类型和约束。 +需要注意的是,模型同步是一个潜在的危险操作,可能会导致数据丢失或不一致。因此,在生产环境中谨慎使用模型同步功能,并进行充分的测试和备份。 +除了sequelize.sync()方法,Sequelize还提供了其他模型同步的选项和方法,如sequelize.sync({ alter: true })可以根据模型的定义自动修改表结构,sequelize.sync({ force: true })可以强制删除已存在的表并重新创建。可以查阅Sequelize的官方文档以了解更多信息。 -- Gitee