简介
在 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