介绍
Sequelize 是一个开源的 Node.js ORM(对象关系映射)框架,它支持多种数据库,包括 MySQL、PostgreSQL、SQLite 和 MSSQL 等。
本篇文章将重点介绍如何使用 Sequelize 操作 MSSQL 数据库。我们将从安装、配置、建表等基础操作开始,逐步介绍 Sequelize 的高级功能。希望通过本文的学习,读者能够熟练地使用 Sequelize 操作 MSSQL 数据库。
环境准备
在开始前,我们需要确保已安装 Node.js 和 MSSQL 数据库,并将 Node.js 版本升级至 12.0 及以上。
接着,我们需要安装 Sequelize 和 MSSQL 驱动程序 mssql
。可以通过 npm 命令进行安装:
npm install sequelize sequelize-cli mssql
配置 Sequelize
配置 Sequelize 需要通过初始化命令来生成配置文件,运行以下命令:
npx sequelize init
执行完毕后,会生成一个 config
目录,其中包含 config.json
文件,用于配置 Sequelize 连接信息。我们需要根据实际情况修改该文件的配置项。以本地开发环境为例:
{ "development": { "username": "sa", "password": "123456", "database": "testdb", "host": "localhost", "dialect": "mssql" } }
其中,dialect
配置项指定了使用的数据库类型为 MSSQL,并指定了数据库连接信息。可以根据实际情况修改其他配置项。
建表
在使用 Sequelize 操作 MSSQL 数据库前,我们需要先创建数据库和数据表。可以通过 SQL 语句手动创建,也可以通过 Sequelize 提供的迁移工具 sequelize-cli
来创建和管理表结构。
使用以下命令创建一个名为 users
的数据表:
npx sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string
执行完毕后,会在 models
目录下生成一个 user.js
文件,用于定义 User
数据表的结构。
我们需要执行迁移命令来将表结构映射至数据库:
npx sequelize db:migrate
执行完毕后,User
数据表就被创建成功了。
查询数据
使用 Sequelize 可以方便地查询、操作数据。以下是常用的数据查询操作。
查询所有数据
const User = require('./models').User; User.findAll().then(users => { console.log(users); });
条件查询
User.findAll({ where: { firstName: 'John' } }).then(users => { console.log(users); });
分页查询
User.findAll({ offset: 10, // 从第 10 条数据开始查询 limit: 5 // 查询 5 条数据 }).then(users => { console.log(users); });
排序查询
User.findAll({ order: [ ['firstName', 'ASC'] ] }).then(users => { console.log(users); });
以上代码演示了所有数据查询的常见用法,读者可以根据需求进行调整。
修改数据
修改数据可以使用 update
方法。以下是修改数据的示例代码。
User.update({ firstName: 'Jane' }, { where: { firstName: 'John' } }).then(() => { console.log('Update successfully.'); });
插入数据
插入数据可以使用 create
方法。以下是插入数据的示例代码。
User.create({ firstName: 'Lucy', lastName: 'Liu', email: 'lucy@liu.com' }).then(() => { console.log('Insert successfully.'); });
删除数据
删除数据可以使用 destroy
方法。以下是删除数据的示例代码。
User.destroy({ where: { firstName: 'Lucy' } }).then(() => { console.log('Delete successfully.'); });
高级功能
除了基本的数据操作,Sequelize 还提供了一些高级功能。
事务管理
Sequelize 支持事务,可以在多个数据操作中实现原子性操作。以下是事务管理的示例代码。
const sequelize = require('./models').sequelize; sequelize.transaction((t) => { return User.update({ firstName: 'David' }, { where: { lastName: 'Smith' }, transaction: t }).then(() => { return User.destroy({ where: { firstName: 'John' }, transaction: t }); }); }).then(() => { console.log('Transaction committed'); }).catch(() => { console.log('Transaction rolled back'); });
关联查询
Sequelize 支持表之间的关联查询。以下是关联查询的示例代码。
const Project = require('./models').Project; User.findAll({ include: [{ model: Project, as: 'projects' }] }).then(users => { console.log(users[0].projects); });
数据验证
Sequelize 支持数据验证,可以在数据插入、更新时对数据进行校验和格式化。以下是数据验证的示例代码。
const User = sequelize.define('user', { firstName: { type: DataTypes.STRING, allowNull: false, validate: { notNull: { msg: 'Please enter your first name.' } } }, lastName: { type: DataTypes.STRING, unique: true, validate: { is: /^[a-zA-Z]+$/i, len: [2, 20] } } }); sequelize.sync().then(() => { User.create({ firstName: null, lastName: '1234' }).catch(err => { console.log(err); }); });
总结
本篇文章介绍了如何使用 Sequelize 操作 MSSQL 数据库。我们通过配置 Sequelize、建表和数据操作等实用技巧,以及高级功能(如事务、关联查询和数据验证)的演示,帮助读者轻松掌握 Sequelize 在 MSSQL 数据库中的应用。
虽然 Sequelize 提供了丰富的功能和易用的接口,但在实际操作中,还需要根据实际业务需求进行适当调整。我们希望本篇文章能够为读者提供基础的指导,引导读者更好地利用 Sequeliz 提高数据管理效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b2364badd4f0e0ffb6485f