前言
随着前端技术的不断发展和进步,越来越多的开发者开始使用 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