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、新建一个静态文件夹用于放置静态文件(html,html中使用的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"
}
}