node-mongoDB-02-封装-应用

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 现在都少不了模块 封装

1. 前言


现在都少不了模块 封装


2. mongodb封装


mgdb.js


const mongoose = require("mongoose");
let db = mongoose.connect("mongodb://127.0.0.1:27017/yzs", {
     useNewUrlParser: true,
     useUnifiedTopology: true
});
// 挪到外面
let mySchema = new mongoose.Schema({
    name: { type: String, default: "无名" },
    age: { type: Number, min: 18, default: 20 },
    sex: { type: String, default: "未知" }
});
const MyModel = mongoose.model("Student", mySchema);
module.exports = {
    model:MyModel,
    openSuccess:function(fn){
    mongoose.connection.on("open", fn);
    }
}



3.server.js



let express = require("express");
let mongo = require("./mgdb");
let app = express();
mongo.openSuccess(function(){
    console.log("数据库链接成功");
    app.get("/allStudents",function(req,res){
        // 查询所有  注意 这个2个回调的参数不要写一样
            mongo.model.find(function(err,result){
                    if(!err){
                            res.json(result);
                    }else{
                        res.json({code:534,msg:"没有查询到数据"});
                    }
            });
    });
});
app.listen(8899,function(){
    console.log("服务器已打开")
});



4. 小练习



// 懂得都懂,不懂的慢慢了解
let reqUrl = "这里用的是那个是 140条新闻地址";
let express = require("express");
let app = express();//搭建服务器
//静态文件读取的中间件 -- 内置中间件
app.use(express.static(__dirname +"/public"));
let http = require("http");
let mongoose = require("mongoose");
mongoose.connect('mongodb://localhost:27017/easy', {
    useNewUrlParser: true,
    useUnifiedTopology: true
});
mongoose.connection.on("open",function () {
    console.log("数据库wangyi链接成功");
    const mySchema = new mongoose.Schema({
        id:{type:String},
        title:{type:String},
        imgUrl:{type:String},
        content:{type:String}
    });
    const MyModel = mongoose.model("news",mySchema);
//新闻数据请求
    app.get("/wangyiinfo",function (req,res) {
        //利用http模块,get请求 -- 没有同源策略的影响
       //转发
        http.get(reqUrl,function (resObj) {
            let allData = "";
            resObj.on("data",function (chunk) {
                allData += chunk;
            });
            resObj.on("end",function () {
                //查询数据库
              MyModel.find({},{_id:0,id:1},{},function (err,result) {
                  if (err){
                      return console.error(err);
                  }
                  console.log(result);//查询到的所有数据---只要了id
                  let idArr = [];//存储所有已收藏数据的id
                  for (let i = 0;i < result.length;i++){
                      idArr.push(result[i].id);
                  }
                  console.log(idArr);
                  //返回数据给前端
                  res.json({wangyiData:allData,idData:idArr});
              });
            });
        });
    });
    //收藏页的数据请求
    app.get("/collection",function (req,res) {
        //查询所有数据库中news集合中的数据
        MyModel.find(function (err,result) {
            if(!err){//查询到了
                res.json(result);
            }else {
                res.json(result);//空
            }
        });
    });
    //点击收藏按钮的数据请求
    app.get("/addCollect",function (req,res) {
        //获取前端传递过来的数据
        // req.query.id1;
        //插入数据
       MyModel.create({
           id:req.query.id1,
           title:req.query.title1,
           content: req.query.content1,
           imgUrl: req.query.imgUrl1
       },function (err,result) {
           if(!err){//插入数据成功
               res.json({msg:1});
           }else {
               res.json({msg:0});
           }
       });
    });
    //点击已收藏按钮 -- 删除该条数据
    app.get("/deleteCollect",function (req,res) {
        //删除
        MyModel.deleteOne({id:req.query.id1},function (err,result) {
            if(!err){
                res.json({msg:1});//删除数据库中该条数据成功
            }else {
                res.json({msg:0});
            }
        });
    });
});
app.listen(8675,function () {
   console.log("8675启动成功");
});



5.前端自己写





相关文章
|
6月前
|
JavaScript 前端开发
如何减少Node.js应用中的全局变量?
如何减少Node.js应用中的全局变量?
403 133
|
6月前
|
监控 负载均衡 JavaScript
有哪些有效的方法可以优化Node.js应用的性能?
有哪些有效的方法可以优化Node.js应用的性能?
356 69
|
3月前
|
存储 监控 JavaScript
基于布隆过滤器的 Node.js 算法在局域网电脑桌面监控设备快速校验中的应用研究
本文探讨了布隆过滤器在局域网电脑桌面监控中的应用,分析其高效空间利用率、快速查询性能及动态扩容优势,并设计了基于MAC地址的校验模型,提供Node.js实现代码,适用于设备准入控制与重复数据过滤场景。
183 0
|
2月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
227 3
|
8月前
|
存储 NoSQL 物联网
MongoDB应用场景
MongoDB应用场景
|
6月前
|
监控 算法 JavaScript
公司局域网管理视域下 Node.js 图算法的深度应用研究:拓扑结构建模与流量优化策略探析
本文探讨了图论算法在公司局域网管理中的应用,针对设备互联复杂、流量调度低效及安全监控困难等问题,提出基于图论的解决方案。通过节点与边建模局域网拓扑结构,利用DFS/BFS实现设备快速发现,Dijkstra算法优化流量路径,社区检测算法识别安全风险。结合WorkWin软件实例,展示了算法在设备管理、流量调度与安全监控中的价值,为智能化局域网管理提供了理论与实践指导。
179 3
|
JavaScript 前端开发 API
探索后端技术:Node.js的优势和实际应用
【10月更文挑战第6天】 在当今数字化时代,后端开发是任何成功软件应用的关键组成部分。本文将深入探讨一种流行的后端技术——Node.js,通过分析其核心优势和实际应用案例,揭示其在现代软件开发中的重要性和潜力。
645 2
|
12月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
425 77
|
12月前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
388 62
|
12月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
552 62

推荐镜像

更多