Node.js 使用 Sequelize 实现 ORM

什么是 Sequelize?

Sequelize 是一个 Node.js 的 ORM(Object-Relational Mapping)框架,可以将关系数据库转换为 JavaScript 中的对象,从而在应用程序中使用。它支持 PostgreSQL、MySQL、SQLite 和 MSSQL 等关系型数据库。

ORM 常被用于简化数据操作,让开发者不用关注 SQL 语句的写法,只需要使用不同的方法来操作数据即可。

如何使用 Sequelize?

要使用 Sequelize,需要先通过 npm 安装它:

npm install --save sequelize

然后在代码中引入:

const { Sequelize } = require('sequelize');

连接数据库

在使用 Sequelize 之前,需要先创建一个数据库连接。建立连接需要使用 Sequelize 构造函数,并传入数据库连接的详细信息:

const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql',
  // ...
});

其中,database 是要连接的数据库名称,usernamepassword 是数据库的用户名和密码。host 表示数据库所在的主机名,dialect 表示要使用的数据库类型。

定义模型

在使用 Sequelize 时,需要先定义模型。模型是数据库表的一个抽象,包含了表的字段、数据类型和验证规则等信息。我们可以通过 Sequelize 的 define() 方法来定义模型:

const User = sequelize.define('User', {
  // 模型属性
  id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    primaryKey: true
  },
  name: {
    type: Sequelize.STRING,
    allowNull: false
  },
  age: {
    type: Sequelize.INTEGER,
    allowNull: false
  }
});

这里我们定义了一个名为 User 的模型,包含了三个属性:idnameage。其中,id 是主键,使用了 autoIncrement 表示自增,nameage 必填,使用了 allowNull 来表示。

同步模型

定义完模型之后,需要使用 Sequelize 的 sync() 方法来同步模型和数据库:

sequelize.sync()
  .then(() => {
    console.log('连接成功!');
  })
  .catch((error) => {
    console.error('连接失败:', error);
  });

这里的 sync() 方法会自动创建数据库表,如果表已经存在,则不会再次创建。

增删改查

在定义完模型和同步模型后,就可以使用 Sequelize 来进行增删改查操作了。下面是一些常用的操作示例:

插入数据

const user = await User.create({ name: 'Tom', age: 18 });
console.log(user.toJSON());

这里使用了 create() 方法来插入一条数据,返回的是插入的数据对象。

查询数据

// 查询所有数据
const users = await User.findAll();
console.log(users.map((user) => user.toJSON()));

// 根据条件查询数据
const users = await User.findAll({
  where: {
    name: 'Tom'
  }
});
console.log(users.map((user) => user.toJSON()));

// 查询指定条数的数据
const users = await User.findAll({
  limit: 10
});
console.log(users.map((user) => user.toJSON()));

这里使用了 findAll() 方法来查询数据,可以使用 where 条件来设置查询条件,也可以使用 limit 来设置查询条数。

更新数据

const res = await User.update({ age: 20 }, {
  where: { name: 'Tom' }
});
console.log('受影响的行数:', res[0]);

这里使用了 update() 方法来更新数据,可以使用 where 条件来设置更新条件。

删除数据

const res = await User.destroy({
  where: { name: 'Tom' }
});
console.log('受影响的行数:', res);

这里使用了 destroy() 方法来删除数据,可以使用 where 条件来设置删除条件。

总结

Sequelize 是一个非常优秀的 Node.js ORM 框架,可以让开发者更加方便地操作数据库。在使用 Sequelize 时,需要先定义模型,然后同步模型和数据库,最后就可以使用常用的增删改查操作了。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a8d744add4f0e0ff2124fe


纠错反馈