使用 Express.js 和 MongoDB 实现 CRUD 操作的教程

简介

在 Web 开发过程中,我们需要与数据库进行交互,经常需要实现 CRUD(Create, Read, Update, Delete)操作。这篇文章将介绍如何使用 Express.js 和 MongoDB 实现 CRUD 操作。

环境准备

在开始之前,我们需要安装以下工具:

  • Node.js
  • MongoDB

确保这些工具已经正确安装,并且能够在命令行中使用。

安装 Express.js

在命令行中输入以下命令,安装 Express.js:

npm install express

Express.js 是一个基于 Node.js 平台的 Web 应用程序开发框架。它提供了方便的路由、中间件和视图系统,使 Web 开发变得更加容易。

安装 MongoDB

在命令行中输入以下命令,安装 MongoDB:

npm install mongodb

MongoDB 是一个 NoSQL 数据库系统,它使用文档来存储数据。它是一个快速、灵活、可扩展的数据库系统,提供了丰富的查询语言和数据操作方式。

实现

连接数据库

在我们开始实现 CRUD 操作之前,我们需要先连接 MongoDB 数据库。在项目根目录下新建一个 db.js 文件,添加以下代码:

const mongodb = require('mongodb');

const url = 'mongodb://localhost:27017/test';

const connect = async () => {
  const client = await mongodb.connect(url, {
    useNewUrlParser: true,
    useUnifiedTopology: true
  });

  return client.db();
};

module.exports = connect;

这里我们使用 mongodb.connect 方法来连接 MongoDB 数据库。接着将连接对象中的数据库实例返回,以便在其他地方使用。

新建数据

在 Express.js 中,我们需要使用路由来处理 HTTP 请求。在项目根目录下新建一个 routes.js 文件,添加以下代码:

const express = require('express');
const connect = require('./db');

const router = express.Router();

router.post('/new', async (req, res) => {
  const db = await connect();
  const result = await db.collection('articles').insertOne(req.body);
  res.json(result.ops[0]);
});

module.exports = router;

这里我们定义了一个 POST 路由 /new,用来处理新建数据的操作。我们首先通过 await connect() 方法获取到 MongoDB 数据库的实例对象 db,再调用 db.collection 方法获取到 articles 集合。

接着,我们使用 insertOne 方法向数据库中插入一条数据,并将插入的结果通过 res.json 方法返回给前端。

查询数据

我们还需要查询已经保存在数据库中的数据,同样在 routes.js 文件中添加一个 GET 路由 /articles

router.get('/articles', async (req, res) => {
  const db = await connect();
  const articles = await db.collection('articles').find().toArray();
  res.json(articles);
});

这里我们使用 find 方法查询 articles 集合中的所有文档,并最终将查询结果通过 res.json 方法返回。

更新数据

更新数据需要使用 PUT 方法,我们在 routes.js 文件中添加 PUT 路由 /update/:id

router.put('/update/:id', async (req, res) => {
  const db = await connect();
  const { id } = req.params;
  const { content } = req.body;
  const result = await db.collection('articles').updateOne(
    { _id: mongodb.ObjectID(id) },
    { $set: { content } }
  );
  res.json(result.modifiedCount);
});

这里我们使用 updateOne 方法更新指定 id 的文档内容。首先通过 req.params 获取到路由参数 id,然后通过 req.body 获取到要更新的文档内容 content

删除数据

最后是删除数据操作,我们在 routes.js 文件中添加 DELETE 路由 /remove/:id

router.delete('/remove/:id', async (req, res) => {
  const db = await connect();
  const { id } = req.params;
  const result = await db.collection('articles').deleteOne({ _id: mongodb.ObjectID(id) });
  res.json(result.deletedCount);
});

这里我们使用 deleteOne 方法删除指定 id 的文档。

总结

本文介绍了如何使用 Express.js 和 MongoDB 实现 CRUD 操作,包括连接数据库、新建数据、查询数据、更新数据、删除数据。这些操作难度较低,但对于前端工程师来说,学习和掌握这些操作仍然是很有意义的。示例代码见下方。

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


纠错反馈