Express是Node.js上常用的Web应用程序框架,使用Express可以快速搭建Web应用,特别是针对RESTful API的应用程序。本文将介绍如何使用Node.js、MongoDB和Express快速构建Web应用。
1. 安装Node.js和MongoDB
在开始之前,您需要安装Node.js和MongoDB。Node.js官网提供了针对各种操作系统的安装包,可以在https://nodejs.org/en/download/下载。MongoDB官网也提供了针对各种操作系统的安装包,可以在https://www.mongodb.com/download-center/community下载。
安装完Node.js和MongoDB后,您可以使用以下命令检查它们是否安装成功:
node -v
mongo --version
如果您看到了类似于v10.16.0和v4.0.10的输出,那么说明Node.js和MongoDB已经成功安装。
2. 初始化Express应用程序
使用命令行,进入您想要存放代码的目录。使用以下命令初始化一个新的Express应用程序:
npm init
然后按照提示操作,以生成一个package.json文件。接下来,使用以下命令安装Express和其他依赖项:
npm install express --save
npm install body-parser --save
npm install mongoose --save
其中,body-parser是一个Express中间件,用于解析请求体。mongoose是一个Node.js模块,用于在MongoDB中进行对象文档映射(ODM)操作,它提供的API与MongoDB的API相似,让我们更方便地操作MongoDB。
3. 配置Express应用程序
打开你的编辑器,创建一个名为app.js的文件。先引入Express和body-parser:
const express = require('express');
const bodyParser = require('body-parser');
然后创建一个Express应用程序:
const app = express();
使用body-parser中间件,解析请求体的格式为JSON:
app.use(bodyParser.json());
将MongoDB连接到Node.js程序:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/myapp', {
useNewUrlParser: true,
useUnifiedTopology: true
}).then(() => console.log('MongoDB Connected'))
.catch(err => console.log(err));
在连接字符串中,myapp是要连接到的MongoDB数据库的名称。useNewUrlParser选项用于指示MongoDB驱动程序在解析MongoDB连接字符串时使用新URI解析器。useUnifiedTopology选项用于指示驱动程序应使用新的服务器发现和监视引擎。
4. 创建数据模型
创建一个名为book.js的文件。使用mongoose模块来定义一个book数据模型:
const mongoose = require('mongoose');
const bookSchema = new mongoose.Schema({
title: { type: String },
author: { type: String },
});
module.exports = mongoose.model('Book', bookSchema);
在上面的代码中,我们只定义了一个基本的book数据模型,它有两个字段:title和author。
5. 创建控制器
创建一个名为books.js的文件,作为book数据模型的控制器。在其中定义GET、POST、PUT和DELETE路由:
const express = require('express');
const router = express.Router();
const Book = require('../models/book');
router.get('/', function(req, res) {
Book.find({}, function(err, books) {
if (err) {
res.send(err);
} else {
res.json(books);
}
});
});
router.post('/', function(req, res) {
var book = new Book(req.body);
book.save(function(err) {
if (err) {
res.send(err);
} else {
res.send({ message: 'Book added' });
}
});
});
router.put('/:id', function(req, res) {
Book.findByIdAndUpdate(req.params.id, req.body, function(err, book) {
if (err) {
res.send(err);
} else {
res.send({ message: 'Book updated' });
}
});
});
router.delete('/:id', function(req, res) {
Book.findByIdAndRemove(req.params.id, function(err) {
if (err) {
res.send(err);
} else {
res.send({ message: 'Book deleted' });
}
});
});
module.exports = router;
在上面的代码中,我们定义了四个路由,分别为GET、POST、PUT和DELETE路由。
6. 在Express应用程序中使用控制器
将books控制器导入到app.js中:
const books = require('./controllers/books');
app.use('/books', books);
在上面的代码中,我们将books控制器作为一个中间件使用,其路由将位于'/books'路径下。
7. 测试
使用以下命令启动Node.js应用程序:
node app.js
使用Postman或类似的API测试工具,测试我们的API是否正确工作。使用GET路由,获取所有图书:
GET http://localhost:3000/books
使用POST路由,添加一本新书:
POST http://localhost:3000/books
Content-Type: application/json
{
"title": "My Book",
"author": "Me"
}
使用PUT路由,更新一本书:
PUT http://localhost:3000/books/5d1aa99ddf051c31640ccd45
Content-Type: application/json
{
"title": "My Updated Book",
"author": "Me"
}
使用DELETE路由,删除一本书:
DELETE http://localhost:3000/books/5d1aa99ddf051c31640ccd45
总结
在本文中,我们介绍了如何使用Node.js、MongoDB和Express快速构建Web应用。我们安装了Node.js和MongoDB,并初始化了一个新的Express应用程序。我们使用了mongoose模块来创建数据模型,并使用body-parser中间件解析请求体的格式为JSON。我们创建了一个控制器,定义了四个路由。最后,我们将控制器作为一个中间件使用,并使用Postman测试了我们的API是否正确工作。