Sequelize 操作 NoSQL 数据库完整指南

在前端开发中,我们经常会碰到操作数据库的需求。越来越多的开发者选择使用 NoSQL 数据库,如 MongoDB、CouchDB 等。然而,当我们使用 Sequelize(一个支持 SQL 数据库的 ORM 框架)去操作 NoSQL 数据库时,我们就需要有一个更顶级的专业技能。

本文将详细介绍如何使用 Sequelize 操作 NoSQL 数据库(以 MongoDB 为例)。我们将讨论如何建立连接、创建模型、查询和操作文档以及其它一些 Last but not least 的问题。

安装

要使用 Sequelize 操作 MongoDB,我们需要使用全新的官方支持的 MongoDB 驱动 —— mongodb。因此,首先你需要安装它:

npm install --save mongodb
npm install --save sequelize

建立连接

首先,我们需要在 Sequelize 中定义一个新的连接。

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

const sequelize = new Sequelize('mongodb://localhost/dbname');

(async () => {
    await sequelize.authenticate();
    console.log('Connection has been established successfully.');
    const db = await MongoClient.connect('mongodb://localhost/dbname');
    console.log('MongoDB has been connected successfully.');
})();

这里,我们调用了 Sequelize 的构造函数,传入 MongoDB 的连接字符串。通过调用 authenticate 方法,我们可以检查是否已连接到数据库。我们也使用了 MongoDB 驱动来检查连接是否为 MongoDB 数据库。

创建模型

接下来,我们需要定义一个 model,它与我们要查询的文档集合相对应。

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

const sequelize = new Sequelize('mongodb://localhost/dbname');

const Users = sequelize.define('users', {
  name: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true,
  },
  password: {
    type: DataTypes.STRING,
    allowNull: false,
  },
}, {
  // Other model options go here
  sequelize, // We need to pass the connection instance
  modelName: 'Users', // We need to choose the model name
  collection: 'users' // We need to choose the collection name
});

在这里,我们先引入 Sequelize 的 DataTypes,然后定义一个 users model,包括了 3 个属性:nameemailpassword。其中,allowNull 为 false 表示数据库中该字段不能为空;unique 为 true 表示该字段必须唯一。

注意,我们需要传入两个参数:一个是 Sequelize 的实例;另一个是模型的名称和集合的名称。

查询和操作文档

有了模型之后,我们就可以使用它来执行 CRUD 操作了。

查询文档

// 查询所有用户信息
const allUsers = await Users.findAll();

// 查询某个邮箱的用户
const user = await Users.findOne({ where: { email: 'test@mail.com' } });

使用 Sequelize 查询文档跟使用 SQL 查询表的方法类似。在这个例子中,我们只需要调用 findAllfindOne 方法,然后 Sequelize 将会生成到数据库中的 SELECT 查询。

创建文档

const user = await Users.create({
  name: 'Test',
  email: 'test@mail.com',
  password: '123456',
});

我们可以使用 create 方法来创建一个新的用户文档。在这个例子中,我们必须传入 nameemailpassword 的值。Sequelize 将会自动为我们生成到 MongoDB 中的 INSERT 查询。

更新文档

const user = await Users.findOne({ where: { name: 'Test' } });
user.email = 'newtest@mail.com';
await user.save();

我们可以使用 findOne 方法来查找符合条件的用户文档并将其存储在变量 user 中。然后,我们可以在 user 对象上更新 email 属性,将其修改成新的邮箱地址,然后保存这个文档。

删除文档

const user = await Users.findOne({ where: { name: 'Test' } });
await user.destroy();

我们可以通过 findOne 方法找到符合条件的用户文档,然后对其调用 destroy 方法来删除它。Sequelize 将会自动生成 DELETE 查询。

总结

至此,我们已经完成了 Sequelize 操作 NoSQL 数据库的完整指南。我们已经介绍了如何建立连接、创建模型以及执行 CRUD 操作。这样一来,我们便可以快速使用 Sequelize 操作 NoSQL 数据库了。

当遇到新的技术时,学习和掌握它们可能会有些困难。通过本文,你现在已掌握了 Sequelize 操作 NoSQL 数据库的技能,并有了一个实现案例。

Sequelize 在 SQL 数据库领域已经证明了自己的实用性和灵活性,这里我们也作了一些介绍。如何同时在 SQL 和 NoSQL 数据库间进行选择可能只是更大问题中的一部分,我们也建议开发者们可以对此加以思考。

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