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。
- 连接成功后,我们需要三个文件:
- SequelizeDemo>app.js这是我们的根文件。
- SequelizeDemo>utils>database.js负责连接MySql。
- SequelizeDemo>models>user.js负责定义模型。
配置database.js: SequelizeDemo>utils>database.js
- 建立连接是如何在 Node.js 中使用 Sequelize 一文中提到的方式,现在,我们可以使用从SequelizeDemo>utils>database.js导出的 sequelize 对象来定义我们的模型。
注意:确保您使用的数据库是在您的数据库中创建的。
配置 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;