授课语音

案例:搭建Node.js服务器及创建MongoDB数据库

在本课中,我们将通过一个实例学习如何使用Node.js搭建一个简单的服务器,并与MongoDB进行集成。通过这个案例,学员将掌握如何创建一个Node.js服务器,如何与MongoDB数据库进行连接,以及如何使用MongoDB存取数据。


1. 环境准备

在开始之前,确保已经安装以下工具:

  1. Node.js:用于运行JavaScript代码的服务器端环境。
  2. MongoDB:一个NoSQL数据库,用于存储数据。
  3. MongoDB Atlas(可选):云数据库服务,便于在线创建MongoDB数据库。
  4. npm:Node.js的包管理工具,用于安装依赖。

2. 创建Node.js项目

2.1 初始化Node.js项目

打开终端,进入到项目目录并初始化Node.js项目:

mkdir node-mongo-example
cd node-mongo-example
npm init -y  # 初始化项目并生成package.json

2.2 安装依赖

为了与MongoDB进行交互,需要安装mongoose,它是一个MongoDB的对象建模工具。

npm install mongoose express
  • mongoose:用于简化Node.js与MongoDB的交互。
  • express:轻量级的Web框架,用于创建Node.js服务器。

3. 搭建Node.js服务器

3.1 创建基本的Express服务器

在项目根目录下创建一个名为server.js的文件,用于配置Node.js服务器。

// 导入express模块
const express = require('express');

// 创建Express应用
const app = express();

// 设置服务器端口
const PORT = 3000;

// 设置路由
app.get('/', (req, res) => {
  res.send('Hello, Node.js with MongoDB!');
});

// 启动服务器
app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

代码解读:

  1. express():创建一个Express应用实例。
  2. app.get():定义一个GET请求路由,当访问根路径时,返回字符串Hello, Node.js with MongoDB!
  3. app.listen():启动服务器并监听指定端口。

3.2 启动服务器

运行以下命令启动服务器:

node server.js

访问http://localhost:3000,浏览器应显示“Hello, Node.js with MongoDB!”


4. 创建MongoDB数据库

4.1 连接MongoDB

server.js中添加MongoDB的连接代码,使用mongoose连接到MongoDB数据库。

// 导入mongoose模块
const mongoose = require('mongoose');

// 连接MongoDB数据库
mongoose.connect('mongodb://localhost:27017/mydatabase', {
  useNewUrlParser: true,  // 使用新的URL解析器
  useUnifiedTopology: true  // 使用统一的拓扑结构
})
  .then(() => {
    console.log('MongoDB连接成功');
  })
  .catch((error) => {
    console.error('MongoDB连接失败', error);
  });

代码解读:

  1. mongoose.connect():用于连接MongoDB数据库,参数是MongoDB的连接字符串。localhost:27017是默认的本地MongoDB地址,mydatabase是数据库的名称。
  2. useNewUrlParseruseUnifiedTopology:这些选项用于确保使用新的解析器和拓扑结构,避免一些老版本MongoDB驱动的警告。
  3. .then():如果连接成功,输出MongoDB连接成功
  4. .catch():如果连接失败,输出错误信息。

4.2 创建数据模型

为了能够操作数据库,我们需要定义一个数据模型。例如,创建一个用于保存用户信息的模型。

// 定义用户数据模型
const userSchema = new mongoose.Schema({
  name: { type: String, required: true },  // 用户名,必填
  email: { type: String, required: true, unique: true },  // 用户邮箱,必填且唯一
  age: { type: Number, required: true },  // 用户年龄,必填
});

// 创建用户模型
const User = mongoose.model('User', userSchema);

代码解读:

  1. userSchema:使用mongoose.Schema定义用户的数据结构,包括nameemailage字段。
  2. mongoose.model():将数据模型与MongoDB中的users集合关联。

5. 创建和获取用户数据

5.1 创建用户

添加一个路由,允许用户通过POST请求创建新用户。

// 导入express的body-parser中间件,用于解析请求体
const bodyParser = require('body-parser');
app.use(bodyParser.json());  // 解析JSON格式的请求体

// 创建用户路由
app.post('/user', (req, res) => {
  const { name, email, age } = req.body;
  
  const newUser = new User({
    name,
    email,
    age
  });

  newUser.save()
    .then((user) => {
      res.status(201).json(user);
    })
    .catch((error) => {
      res.status(400).json({ message: '用户创建失败', error });
    });
});

代码解读:

  1. bodyParser.json():该中间件用于解析JSON格式的请求体。
  2. app.post():定义一个POST请求路由,用于接收用户数据并创建新用户。
  3. new User():根据请求体数据创建一个新的用户实例。
  4. newUser.save():保存新用户到数据库。

5.2 获取所有用户

添加一个路由,允许用户通过GET请求获取所有用户的信息。

// 获取所有用户路由
app.get('/users', (req, res) => {
  User.find()
    .then((users) => {
      res.status(200).json(users);
    })
    .catch((error) => {
      res.status(500).json({ message: '获取用户失败', error });
    });
});

代码解读:

  1. User.find():查询数据库中的所有用户。
  2. .then():查询成功后返回用户数据。
  3. .catch():查询失败时返回错误信息。

6. 总结

  1. 搭建Node.js服务器:通过Express框架创建了一个基本的Web服务器。
  2. 连接MongoDB:使用mongoose模块连接到本地MongoDB数据库,并定义了一个用户数据模型。
  3. 数据操作:通过POST请求创建新用户,通过GET请求获取所有用户。

通过这个实例,学员可以了解如何在Node.js中搭建服务器并与MongoDB进行集成,实现数据的增删改查操作。

去1:1私密咨询

系列课程: