利用nodejs+express+mongodb完成数据持久化项目(附修改源码)

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用nodejs+express+mongodb完成数据持久化项目(附修改源码)相关的知识,希望对你有一定的参考价值。

利用nodejs+express+mongodb完成数据持久化项目

增删改查

  • 可用控制台查看mongodb数据库数据是否存储成功


遇到的一个问题,返回的id属性值是有引号的。特备注意

在利用mongodb数据库存储之前,记得一定要打开数据库,再连接数据库

student.js核心代码:

var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1/test');
var Schema = mongoose.Schema;

var studentSchema = new Schema(
    name: 
        type: String,
        required: true
    ,
    sex: 
        type: Number,
        // 枚举这些数字
        enum: [0, 1],
        default: 1
    ,
    age: 
        type: Number
    ,
    hover: 
        type: String
    
)

// 直接导出模型构造函数
module.exports = mongoose.model('Student', studentSchema)

router.js修改核心代码

// 路由模块设计集合

var fs = require('fs');
var path = require('path');
var Student = require('./student');
/* Student.updataByid(
    id: 1,
    name: "李四",
    age: 19
, function (err) 
    if (err) 
        return console.log('修改失败');
    
    console.log('修改成功');
) */
var express = require('express');
// 创建一个路由容器
var router = express.Router();
// 把路由器挂载到router容器中
router.get('/students', function (req, res) 
    // 参数二可选,把uft8字符转成我们认识的字符串
    /* fs.readFile(path.join(__dirname, './db.json'), 'utf8', function (err, data) 
        if (err) 
            // 状态码500,服务端出错
            console.log("出错了");
            // return res.status(500).send('Server error.');
        
        res.render('index.html', 
            // 从文件中读取的数据一定是字符串
            // 所以一定要转成对象
            students: JSON.parse(data).student
        );
    ) */

    Student.find(function (err, students) 
        if (err) 
            return res.status(500).send('Server error.');
        
        res.render('index.html', 
            students: students
        );
    )
)
router.get('/students/new', function (req, res) 
    res.render('new.html');
)
router.post('/students/new', function (req, res) 
    /* 
        1.获取表单数据
        2.处理(将数据保存在db.json实现持久化)
        3.发送响应
    */
    // console.log(req.body);
    // 先读取出来,转成对象
    // 然后往对象中push数据,然后把对象转为字符串
    // 然后再把字符串再次写入文件
    var student = req.body;
    new Student(student).save(function (err) 
        if (err) 
            return res.status(500).send('Server error.');
        
        res.redirect('/students');
    )

)
router.get('/students/edit', function (req, res) 
    // 在客户端的列表中处理连接问题(需要有id参数)
    // 获取要编辑的学生
    // 渲染编辑页面"1.根据id把学生信息查出来,然后模板引擎渲染页面
    // console.log(req.query.id);可以拿到id
    // 把得到的字符串有引号转Wie没引号的id数据
    // 正则表达式模式
    Student.findById(req.query.id.replace(/"/g, ''), function (err, student) 
        if (err) 
            return res.status(500).send('Server error.');
        
        // 查看ID学生:console.log(student);
        res.render('edit.html', 
            student: student
        )
    )

)
router.post('/students/edit', function (req, res) 
    // 获取表单数据
    // 更新
    // Struend.updataId()
    // console.log(req.body);
    var id = req.body.id.replace(/"/g, '')
    Student.findByIdAndUpdate(id, req.body, function (err) 
        if (err) 
            return res.status(500).send('Server error.');
        
    )
    res.redirect('/students')
)
router.get('/students/delete', function (req, res) 
    // 1.获取要删除的id
    // 2、根据id执行删除操作
    // 3.根据操作结果发送响应数据
    // console.log(req.query.id);
    var id = req.query.id.replace(/"/g, '')
    Student.findByIdAndRemove(Aid, function (err) 
        if (err) 
            return res.status(500).send('Server error.');
        
        res.redirect('/students')
    )
)

// 把router导出
module.exports = router;



以上是关于利用nodejs+express+mongodb完成数据持久化项目(附修改源码)的主要内容,如果未能解决你的问题,请参考以下文章

nodejs 安装express的时候可以指定express的版本吗

重点突破—— Nodejs+Express+MongoDB的使用基础

nodeJS+Express+MongoDB

Nodejs+express+mongodb+mongoose

使用 Nodejs、Express、Mongoose 和 React 将图像上传到 MongoDB

如何使用 nodejs / express 将数据存储在 mongodb 中?