📜  Node.js MySQL-使用 Sequelize 创建表

📅  最后修改于: 2022-05-13 01:56:32.242000             🧑  作者: Mango

Node.js MySQL-使用 Sequelize 创建表

Sequelize 简介: Sequelize 是一个基于 Promise 的 Node.js ORM,用于 Postgres、MySQL、MariaDB、SQLite 和 Microsoft SQL Server。它的特性是可靠的事务支持、关系、急切和延迟加载、读取复制等等。

使用 Sequelize 连接到 MySql 数据库:

  • 要使用Sequelize在 MySQL 和 Node.js 之间建立连接,请访问如何在 Node.js 中使用 Sequelize。
  • 连接成功后,我们需要三个文件:
    1. SequelizeDemo>app.js这是我们的根文件。
    2. SequelizeDemo>utils>database.js负责连接MySql。
    3. SequelizeDemo>models>user.js负责定义模型。

配置database.js: SequelizeDemo>utils>database.js

  • 建立连接是如何在 Node.js 中使用 Sequelize 一文中提到的方式,现在,我们可以使用从SequelizeDemo>utils>database.js导出的 sequelize 对象来定义我们的模型。

注意:确保您使用的数据库是在您的数据库中创建的。

database.js 文件将如下所示。

配置 user.js:

  • 使用SequelizeDemo>models>user.js文件定义模型和表之间的映射,使用 define 方法。
Javascript
// Include Sequelize module.
const Sequelize = require('sequelize')
  
// Import sequelize object, 
// Database connection pool managed by Sequelize.
const sequelize = require('../utils/database')
  
// Define method takes two arguments
// 1st - name of table
// 2nd - columns inside the table
const User = sequelize.define('user', {
  
    // Column-1, user_id is an object with 
    // properties like type, keys, 
    // validation of column.
    user_id:{
  
        // Sequelize module has INTEGER Data_Type.
        type:Sequelize.INTEGER,
  
        // To increment user_id automatically.
        autoIncrement:true,
  
        // user_id can not be null.
        allowNull:false,
  
        // For uniquely identify user.
        primaryKey:true
    },
  
    // Column-2, name
    name: { type: Sequelize.STRING, allowNull:false },
  
    // Column-3, email
    email: { type: Sequelize.STRING, allowNull:false },
  
    // Column-4, default values for
    // dates => current time
    myDate: { type: Sequelize.DATE, 
            defaultValue: Sequelize.NOW },
  
     // Timestamps
     createdAt: Sequelize.DATE,
     updatedAt: Sequelize.DATE,
})
  
// Exporting User, using this constant
// we can perform CRUD operations on
// 'user' table.
module.exports = User


Javascript
// Import the sequelize object on which 
// we have defined model. 
const sequelize = require('./utils/database') 
    
// Import the user model we have defined 
const User = require('./models/user) 
    
// Create all the table defined using  
// sequelize in Database 
    
// Sync all models that are not 
// already in the database 
sequelize.sync()  
    
// Force sync all models 
// It will drop the table first  
// and re-create it afterwards 
sequelize.sync({force:true})


  • 要了解有关Sequelize 数据类型的更多信息,请访问数据类型。
  • SequelizeDemo>models>user.js文件中,我们定义了模型。

配置 app.js:

  • 文件名 => SequelizeDemo>app.js
  • 要创建模型,我们可以使用以下方式之一 -
    • sync() 方法:如果模型不存在,此方法将创建模型,但是,如果已经存在,则不会覆盖它。
    • sync({force:true}) 方法:如果模型不存在,此方法将创建模型,但是,如果已经存在,它将覆盖它。

Javascript

// Import the sequelize object on which 
// we have defined model. 
const sequelize = require('./utils/database') 
    
// Import the user model we have defined 
const User = require('./models/user) 
    
// Create all the table defined using  
// sequelize in Database 
    
// Sync all models that are not 
// already in the database 
sequelize.sync()  
    
// Force sync all models 
// It will drop the table first  
// and re-create it afterwards 
sequelize.sync({force:true})
  • 数据库同步:开始一个新项目时,您不会有数据库结构,而使用 Sequelize 则不需要。只需指定您的模型结构,然后让库完成其余的工作。

运行程序的步骤:

  • 项目结构将如下所示:

项目结构

  • 安装此项目所需的模块:
npm install mysql2
npm install sequelize
  • 使用以下命令执行 app.js(根文件):
node app.js

输出

  • 在 MySql 数据库中,现在我们可以描述我们使用 Sequelize 创建的用户模型。使用以下命令
use database geeksforgeeks
desc users;

D b