node.js操作mongodb实现数据的增删改查

本文详细介绍了如何使用Node.js、Express框架和MongoDB数据库实现学生档案管理系统的数据增删改查功能。从创建项目、安装依赖、连接数据库到设计学员信息表,再到设置路由和实现各种操作,每个步骤都通过代码示例进行说明。最后通过Express框架优化代码,提升应用性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 本地环境及项目结构展示

1.1 本地环境
  • win10
  • node v12.18.1
  • 编辑器:VScode
  • 语言:Node.js
  • 框架:express
  • 数据库:mongodb
1.2 项目结构图

在这里插入图片描述

1.3 案例介绍 - 学生档案管理

目标:模块引擎应用,强化node.js项目制作流程
知识点: http请求响应、数据库、模板引擎、静态资源访问

2. 制作流程

2.1 建立项目文件夹并生成项目描述文件
  • 在命令行中输入 npm init -y 生成package.json文件
{
   
   
 "name": "students",
 "version": "1.0.0",
 "description": "",
 "main": "app.js",
 "scripts": {
   
   
   "test": "echo \"Error: no test specified\" && exit 1"
 },
 "keywords": [],
 "author": "",
 "license": "ISC",
 "dependencies": {
   
   
   "art-template": "^4.13.2",
   "body-parser": "^1.19.0",
   "dateformat": "^3.0.3",
   "mongoose": "^5.9.20",
   "router": "^1.3.5"
 }
}
2.2 创建网站服务器实现客户端和服务器端通信

app.js代码如下:

//2.2.1 引入系统模块http
const http = require('http');
//2.2.2 创建网站服务器
const app = http.createServer();
//2.2.3 为网站服务器对象添加请求事件
app.on('request', (req, res) => {
   
   
    router(req, res, () => {
   
   })
});
//2.2.4 监听80端口
app.listen(80);
console.log('服务器已启动');
  • 在命令行中输入 nodemon .\app.js 命令,在终端中可以看到“服务器已启动”。
    在这里插入图片描述
2.3 连接数据库并根据需求设计学员信息表

第三方模块 mongoose

  • 功能: 使用Node.js操作MongoDB数据库需要依赖Node.js第三方模块mongoose
  • 在命令行中输入 npm install mongoose 命令,下载mongoose第三方模块

2.3.1 连接数据库

model/connect.js 代码如下:

//2.3.1 引入系统模块mongoose
const mongoose = require('mongoose');
//2.3.2 数据库连接   27017是mongodb数据库的默认端口
mongoose.connect('mongodb://localhost/playground', {
   
    useNewUrlParser: true, useUnifiedTopology: true })
    .then(() => console.log('数据库连接成功')) //连接成功
    .catch((err) => console.log(err, '数据库连接失败')); //连接失败

2.3.2 根据需求设计学员信息表

model/user.js 代码如下:

//2.3.2 创建学生集合规则
const studentsSchema = new mongoose.Schema({
   
   
    name: {
   
   
        type: String,
        //true表示title 属性必传;后面的是错误提示内容
        required: [true, '请传入姓名'],
        //最小长度是2,最大长度是10
        minlength: [2, '姓名长度不能小于2'],
        maxlength: [10, '姓名长度最大不能超过20']
    },
    age: {
   
   
        type: Number,
        //年龄最小10,最大25
        min: 10,
        max: 25
    },
    sex: String,
    email: String,
    hobbies: [String],
    collage: String,
    enterDate: {
   
   
        type: Date,
        default: Date.now
    }
});
//2.3.3 使用规则studentsSchema,创建集合,返回集合构造函数(参数一:集合名称;参数二:集合规则)
const Student = mongoose.model('Student', studentsSchema);

//2.3.4 将学生信息集合进行导出
module.exports = Student;
2.4 创建路由并实现页面模板呈递

第三方模块 router

  • 功能: 实现路由
  • 使用步骤:
  1. 获取路由对象
  2. 调用路由对象提供的方法创建路由
  3. 启用路由,使路由生效
  • 在命令行中输入 npm install router 命令,下载router第三方模块

第三方模块 art-template

  • art-template 是一个简约、超快的模板引擎。
  • 它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。
  • 在命令行中输入 npm install art-template --save 命令,下载art-templater第三方模块

route/index.js代码如下:

//2.4.1 引入router模块
const getRouter = require('router');
//2.4.2 获取路由对象
const router = getRouter();
//导入 创建学生信息集合 模块
const Student = require('../model/user');
//引入模板引擎
const template = require('art-template');
//引入系统模块querystring: 处理请求参数模块
const querystring = require('querystring');
//引入url模块
const url = require('url');

//2.4.3 呈递学生档案信息增加页面
router.get('/add', (req, res) => {
   
   
    let html = template('add.art', {
   
   });
    res.end(html);
});
//2.4.4 呈递学生档案信息页表页面
router.get('/list', async(req, res) => {
   
   
    //查询学生信息
    let students = await Student.find();

    let html = template('list.art', {
   
   
        students: students
    });
    res.end(html);
});
module.exports = router;
2.5 实现 增删改查 功能

2.5.1 添加学生信息

views/add.art代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>添加学生档案信息</title>
    <link rel="stylesheet" href=
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值