在 Web 开发中,数据库操作是不可避免的一部分。而 Express.js 和 Mongoose 是两个非常流行的 Node.js 库,用于构建 Web 应用和操作 MongoDB 数据库。本文将介绍如何使用 Express.js 和 Mongoose 进行数据库操作。
安装和配置
在开始之前,需要安装 Node.js、MongoDB 和 Express.js。安装完成后,可以使用以下命令安装 Mongoose:
npm install mongoose --save
接下来,创建一个 Express.js 应用程序,并连接到 MongoDB 数据库:
// javascriptcn.com 代码示例 const express = require('express'); const mongoose = require('mongoose'); const app = express(); mongoose.connect('mongodb://localhost/myapp', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB...')) .catch(err => console.error('Could not connect to MongoDB...', err)); app.listen(3000, () => console.log('Listening on port 3000...'));
定义模型
在 Mongoose 中,模型是一个与 MongoDB 集合(collection)相关联的类。可以使用模型来创建、读取、更新和删除文档。
在开始使用模型之前,需要定义一个模式(Schema)。模式定义了文档的结构,包括字段名、类型、验证器等。
以下是一个示例模式:
// javascriptcn.com 代码示例 const mongoose = require('mongoose'); const userSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, password: { type: String, required: true }, createdAt: { type: Date, default: Date.now } }); const User = mongoose.model('User', userSchema); module.exports = User;
在上面的示例中,定义了一个名为 User 的模型,包含了 name、email、password 和 createdAt 四个字段。其中,name 和 email 字段是必需的,并且 email 字段必须是唯一的。createdAt 字段默认为当前时间。
查询文档
在 Express.js 中,可以使用路由来处理 HTTP 请求。以下是一个示例路由,用于获取所有用户:
// javascriptcn.com 代码示例 const express = require('express'); const User = require('../models/user'); const router = express.Router(); router.get('/users', async (req, res) => { const users = await User.find(); res.send(users); }); module.exports = router;
在上面的示例中,使用了 User.find() 方法来获取所有用户。该方法返回一个 Promise,因此需要使用 async/await。
可以在查询中使用条件,例如:
const users = await User.find({ name: 'John' });
上面的示例将返回所有名为 John 的用户。
创建文档
以下是一个示例路由,用于创建用户:
// javascriptcn.com 代码示例 const express = require('express'); const User = require('../models/user'); const router = express.Router(); router.post('/users', async (req, res) => { const user = new User({ name: req.body.name, email: req.body.email, password: req.body.password }); await user.save(); res.send(user); }); module.exports = router;
在上面的示例中,使用了 User.save() 方法来保存用户。该方法返回一个 Promise,因此需要使用 async/await。
更新文档
以下是一个示例路由,用于更新用户:
// javascriptcn.com 代码示例 const express = require('express'); const User = require('../models/user'); const router = express.Router(); router.put('/users/:id', async (req, res) => { const user = await User.findByIdAndUpdate(req.params.id, { name: req.body.name, email: req.body.email, password: req.body.password }, { new: true }); res.send(user); }); module.exports = router;
在上面的示例中,使用了 User.findByIdAndUpdate() 方法来更新用户。该方法返回更新后的用户对象。可以使用 { new: true } 选项来返回更新后的文档。
删除文档
以下是一个示例路由,用于删除用户:
// javascriptcn.com 代码示例 const express = require('express'); const User = require('../models/user'); const router = express.Router(); router.delete('/users/:id', async (req, res) => { const user = await User.findByIdAndRemove(req.params.id); res.send(user); }); module.exports = router;
在上面的示例中,使用了 User.findByIdAndRemove() 方法来删除用户。该方法返回被删除的用户对象。
总结
本文介绍了如何使用 Express.js 和 Mongoose 进行数据库操作。通过定义模型、查询、创建、更新和删除文档,可以轻松地操作 MongoDB 数据库。希望本文能够对前端开发者学习和使用 Express.js 和 Mongoose 有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65586138d2f5e1655d290315