Sequelize 操作 MongoDB 数据库完整指南

前言

随着前端技术的不断发展和进步,越来越多的开发者开始使用 JavaScript 构建全栈应用,其中 Sequelzie 是一个非常流行的 ORM(Object-Relational-Mapping)库,方便开发者在 Node.js 环境下使用关系型数据库。在 Sequelzie 3.0 版本中,添加了对 MongoDB 的支持,使得 MongoDB 与使用 SQL 数据库一样方便地被操作。

本篇文章将详细介绍 Sequelzie 如何操作 MongoDB 数据库,包括创建连接、定义模型、CRUD 操作等,并提供示例代码,帮助读者更好地理解相关知识。

环境

在进行接下来的操作之前,需要确保已经安装了 Node.js 和 MongoDB 数据库,并且能够在本地环境中运行。

安装依赖

在终端中输入如下命令来安装相关依赖:

npm install sequelize mongodb sequelize-cli -g

其中,sequelize-cli 是 Sequelize 的命令行工具,可以帮助我们更方便地进行各种操作。

创建项目

首先,我们需要创建一个新的项目,并且进行初始化,具体操作如下:

mkdir sequelize-mongodb
cd sequelize-mongodb
npm init

在创建好项目后,我们还需要添加一个 .sequelizerc 文件,并且在其中添加 MongoDB 数据库的配置信息。具体操作如下:

touch .sequelizerc

打开文件,输入如下内容:

const path = require('path');

module.exports = {
  'config': path.resolve('./database/config', 'database.js'),
  'models-path': path.resolve('./database/models'),
  'seeders-path': path.resolve('./database/seeders'),
  'migrations-path': path.resolve('./database/migrations')
}

以上内容中,config 表示配置文件所在路径,models-path 表示模型文件所在路径,seeders-path 表示数据填充文件所在路径,migrations-path 表示迁移文件所在路径。其中,我们需要在 config 目录下新建一个 database.js 文件,并且在其中添加 MongoDB 数据库的配置信息。具体如下:

module.exports = {
  dialect: 'mongodb',
  host: 'localhost',
  port: 27017,
  database: 'sequelizemongodb'
}

创建连接

在完成了前面的几个步骤之后,接下来就可以开始创建连接了。我们需要先引入 Sequelize 包,并且在配置文件中添加相应的配置信息。具体操作如下:

const Sequelize = require('sequelize');
const config = require('./config/database');

const sequelize = new Sequelize(config.database, config.username, config.password, {
  host: config.host,
  port: config.port,
  dialect: config.dialect,
  logging: false,
  define: {
    timestamps: false
  }
});

module.exports = sequelize;

在以上代码中,我们首先将 Sequelzie 引入进来,然后通过 Sequelize 构造函数创建了一个连接,同时也将其导出,方便其他模块进行调用。其中,我们需要将数据库的配置信息传递给构造函数,同时还可以对一些默认配置进行修改,比如关闭日志输出和禁用自动生成时间戳。更详细的说明请参考文档。

定义模型

在进行 CRUD 操作之前,我们需要先定义好相关的模型,方便后续进行操作。在 Sequelzie 中,我们可以通过 extend() 方法来定义相关的模型。具体创建一个 User 模型操作如下:

const { Model, DataTypes } = require('sequelize');
const sequelize = require('../helpers/db');

class User extends Model {}

User.init({
  username: {
    type: DataTypes.STRING(50),
    allowNull: false
  },
  email: {
    type: DataTypes.STRING(50),
    allowNull: false
  },
  password: {
    type: DataTypes.STRING(100),
    allowNull: false
  },
  active: {
    type: DataTypes.BOOLEAN,
    allowNull: false,
    defaultValue: false
  }
}, {
  sequelize,
  timestamps: false,
  modelName: 'user'
});

module.exports = User;

在上面的代码中,我们首先调用 Model.init() 方法来定义模型,其中需要传递两个参数,即属性和选项。在属性中,我们使用 DataTypes 来定义字段的类型,然后在选项中,我们可以指定模型对应的表名,并且设置一些默认值。

CRUD 操作

1. 创建数据

const User = require('../models/user');

const create = async () => {
  const user = await User.create({
    username: 'meowu',
    email: 'meowu@example.com',
    password: '123456',
    active: true
  });

  console.log(user.toJSON());
}

create();

以上代码中,我们首先声明一个 create 函数,并且在其中通过 User.create() 方法来创建一个用户,并且打印出其 JSON 形式的数据。其中,我们需要传递一个对象来设置用户的属性,然后使用 await 关键字来等待 Promise 结果。

2. 获取数据

const User = require('../models/user');

const findAll = async () => {
  const users = await User.findAll({ raw: true });

  console.log(users);
}

findAll();

以上代码中,我们使用了 User.findAll() 方法,来查询所有的用户,并且使用使用 raw: true 选项,来获取原生 JSON 数据。

3. 更新数据

const User = require('../models/user');

const update = async () => {
  const user = await User.findOne({ where: { username: 'meowu' } });
  user.active = true;

  await user.save();

  console.log(user.toJSON());
}

update();

以上代码中,我们首先通过 User.findOne() 方法来查询到满足条件的一个用户,然后将其属性中的 active 值修改为 true,并且使用 save() 方法来保存修改。

4. 删除数据

const User = require('../models/user');

const destroy = async () => {
  const user = await User.findOne({ where: { username: 'meowu' } });

  await user.destroy();

  console.log(user.toJSON());
}

destroy();

以上代码中,我们首先通过 User.findOne() 方法来查询到满足条件的一个用户,然后使用 destroy() 方法来删除该用户。

总结

通过本文的介绍,我们已经可以初步掌握在 Sequelzie 中使用 MongoDB 数据库的方法。在实际开发中,我们还需要根据实际情况进行调整并且进行相关的优化,提高代码的可维护性和可读性。希望本文能够对大家在使用 Sequelzie 操作 MongoDB 数据库时提供一些帮助,进而更好地进行开发工作。

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