集成MongoDB到Express框架中

280 阅读2分钟

Mongodb它是一个应用,Express框架搭建的系统也是一个应用,如果两个应用需要通信,那么进行应用管理,必须使用通信(TCP、UDP)手段

  • 所以需要集成第三方库:

    mongoose是一个ODM(object document mapping 对象到文档数据的一个映射)映射框架

    安装:cnpm i -S mongoose

    项目流程:

      a、mkdir
      b、npm init -y
      c、修改package.json和readme
      d、新建index.js
      e、安装依赖 express mongoose
      f、引入框架、实例化
      g、监听端口启动服务
      h、做一个静态服务器
          h0、新建一个静态文件夹用于放置静态文件(htmlhtml中使用的js,html使用图片,html使用的css)
          h1、新建一个login.html TODO
          h2、使用中间件(express.state(root path))来定义文件夹为一个静态资源包
      i、使用get(path, handler: (req, res) => void))方法来定义接口
      
    

    mongoose的库的使用 a、连接数据库 b、建立数据模型

html代码

<body>
    <button onclick="getList()">获取用户列表数据</button>
    <p id="message"></p>
</body>
<script>
    function getList() {
        let pEle = document.querySelector('#message')
        var xhr = new XMLHttpRequest();
        xhr.withCredentials = true;

        xhr.addEventListener("readystatechange", function () {
            if (this.readyState === 4) {
                pEle.innerHTML = this.responseText
                console.log(this.responseText);
            }
        });
        xhr.open("GET", "/user/list");

        xhr.send();
    }

js代码

 /**
 * @author looveyy
 * @time 2022-03-29
 * @description 项目引入文件
 */

const express = require('express')
const app = express()

app.listen(8080, () => {
    console.log('---------------------------------->服务器已启动');
})
// static(root: string, options?: serveStatic.ServeStaticOptions)
app.use(express.static('public', { index: 'login.html' }))

/**
 * 开始集成mongoose库用于链接mongodb
 */
const loy = require('mongoose')

//mongoose是一个OMD框架,它用于链接当前应用和mongodb
// connect(uri: string, callback: loy.CallbackWithoutResult): void
//uri是一个链接地址 (cmd输入mongo可以看到 mongodb://127.0.0.1:27017/业务数据库名字)
loy.connect('mongodb://127.0.0.1:27017/looveyy',(err)=>{
    if(!err){
        console.log('------------------------->连接数据库成功');
    }else{
        console.log('------------------------->连接数据库失败');
        console.log(err);
    }
})

//ODM框架,它是js得对象(他应该是一个数据模型 -- model)和数据库中得document对象(数据库集合)进行映射关联
//所以我们操作数据库模型就相当于操作了数据库对应得集合
//由上分析得到需要创建一个model实例对象(因为我们需要用这个对象去进行增删查改业务),这个需要描述集合长什么样子,需要指定我们对应得集合名字
const UserSchema = new loy.Schema({
    id:String,
    name:String,
    age:Number,
    sex:Number,
})

const UserModel = loy.model('looveyy',UserSchema,'userList')
                         // looveyy数据库         数据库里面得哪个表

//定义一个获取用户列表的接口
app.get('/user/list', (rqe, res) => {
    // res.send({ code: 100, message: 'success', data: [] })
    UserModel.find(function(err,result){
        if(!!err){
            console.log(err);
            res.send({code:500,message:'服务器错误'})
        }else{
            res.send({code:200,message:"success",data:result})
        }
    })
})

package.json文件

{
  "name": "yang_ststem",
  "version": "1.0.0",
  "description": "是一个用于摸鱼得一个系统",
  "main": "index.js",
  "scripts": {
    "start": "supervisor index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.3",
    "mongoose": "^6.2.9"
  }
}