Sequelize 操作 MSSQL 数据库完整指南

介绍

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