二十、Express框架连接MongoDB数据库操作

         在上一篇中已经在Node.js中引入使用了mongoose进行MongoDB数据库的基本操作,在本篇当中在Express框架中来连接数据库以及操作数据库; 

Express 项目环境

         这里是通过全局安装Express框架生产的项目环境,也可以通过局部安装的方式,安装过程可以在往期的篇目中去看一下,附上链接: Express框架 安装_express框架安装

express expMongoPro
npm install

局部安装mongoose模块

npm install mongoose -s

 连接数据库

         首先引入mongoose模块,通过connect()方法连接数据库,然后通过Schema进行定义document框架规范数据类型,再通过通过model()方法发布模型,最后将模块进行导出供其他程序加载使用;

1. 编写代码

1 . 在 /public/javascript/ 的目录下创建这个文件 conn_mongodb.js 编写代码:

const mongoose = require('mongoose');
mongoose.set('strictQuery',true);
mongoose.connect('mongodb://127.0.0.1:27017/syan',function(err){
    if(err){
        console.log("—— 连接异常 ——");
    }else{
        console.log("—— 连接成功 ——");
    }
})

// document框架
const infoSchema = new mongoose.Schema({
    name:String,
    age:Number
});

// Model - global(全局)
global.infoModel = mongoose.model("syan",infoSchema,"sen");

// 共享
module.exports = mongoose;

2 . 测试引入打印:在 /routes/index.js文件中编写 ;

const conn= require('../public/javascripts/conn_sql')


 操作数据库

数据库已经连接成功了,下面要来操作数据库的增删查改:

        在 routes/index.js 文件中编写路由文件,引入conn_mongodb.js文件,通过请求url http://127.0.0.1:3000/all 时,进行查询数据库的数据操作:

const express = require('express');
const router = express.Router();
const conn = require('../public/javascripts/conn_mongodb');

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

/* 查 */
router.all('/all',function(req,res){
    // 查询操作
    infoModel.find({}).exec(function(err,data){
        if(err){
            res.send("查询异常");
        }else{
            console.log("查询成功");
            res.send(data);
        }
    })
})

module.exports = router;

 通过命令 npm start 将项目跑起来:

在浏览器中输入请求url地址: http://127.0.0.1:3000/all 或 http://localhost:3000/all

 以上就进行了数据库的查询操作;

         通过请求url 往数据库里添加数据操作;添加一条文档 <name:LIN ,age:18 >;

1. 代码编写

/* 增 */ 
router.get('/save',function(req,res){
    // 添加数据 —— <name>:LIN <age>:18
    let addContent = {
        name:'LIN',
        age:18
    }
    const insert = new infoModel();
    insert.name = addContent.name;
    insert.age = addContent.age;
    insert.save(function(err,data){
        if(err){
            res.send("添加异常");
        }else{
            console.log("添加成功");
            res.send(data);
        }
    });
})

 2. 测试运行,浏览器输入:http://127.0.0.1:3000/save

 改

        通过请求url 往数据库里修改文档操作;修改一条文档内容 <name:LIN ,age:18 > 修改文档内容为 <name : ZEN ,age : 18 >;

1. 代码编写

/* 改 */ 
router.get('/update',function(req,res){
    // 更新文档 —— <name>:ZEN <age>:18
    let updateContent = {
        name:'ZEN',
        age:18
    }
    // 更新条件
    let querys = {
        name:'LIN',
        age:18
    }

    infoModel.updateOne(querys,updateContent,function(err){
        if(err){
            console.log("修改异常");
        }else{
            console.log("修改成功");
            res.send("{ updated : 1 , message : success }");
        }
    })
})

 2. 测试运行,浏览器输入:http://127.0.0.1:3000/update

 删

         通过请求url 往数据库里删除文档操作;删除一条文档内容 _id:6397db88b11c6ecf96f07d2e

 1. 代码编写 

/* 删 */ 
router.get('/del/:id',async function(req,res){
    // 根据id来删除数据(id是唯一标识);
    console.log("id:"+ req.params.id);
    const doc = await infoModel.findById(req.params.id);
    await doc.remove(function(err){
        if(err){
            res.send("删除异常");
        }else{
            console.log("删除成功");
            res.send("{ delete : 1 , message : success }");
        }
    })
})

  2. 测试运行,浏览器输入:http://127.0.0.1:3000/del/输入删除的_id

        以上就是本篇的全部内容了,通过Express框架连接MongoDB数据以及进行集合中文档的增删查改操作,搭配可视化工具使用可以方便快捷的来查询数据的变化;感谢大家的支持!

猜你喜欢

转载自blog.csdn.net/weixin_52203618/article/details/128294169
今日推荐