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.前端自己写





相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
JavaScript 前端开发 API
探索后端技术:Node.js的优势和实际应用
【10月更文挑战第6天】 在当今数字化时代,后端开发是任何成功软件应用的关键组成部分。本文将深入探讨一种流行的后端技术——Node.js,通过分析其核心优势和实际应用案例,揭示其在现代软件开发中的重要性和潜力。
152 2
|
2月前
|
存储 缓存 NoSQL
MongoDB 是什么?有哪些应用场景?
MongoDB 是一个由 MongoDB Inc. 开发的基于分布式文件存储的面向文档的数据库,自 2009 年推出以来,以其高性能、易部署、模式自由、强大的查询语言和出色的可扩展性受到广泛欢迎。它适用于互联网应用、日志分析、缓存、地理信息系统等多种场景。MongoDB 支持多种编程语言,并提供了丰富的社区支持,便于开发者快速上手。结合板栗看板等工具,MongoDB 可进一步提升数据存储、分析和同步的效率,支持个性化功能实现,助力团队协作和项目管理。
|
16天前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
166 77
|
14天前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
59 31
|
14天前
|
JavaScript 前端开发 API
深入理解Node.js事件循环及其在后端开发中的应用
本文旨在揭示Node.js的核心特性之一——事件循环,并探讨其对后端开发实践的深远影响。通过剖析事件循环的工作原理和关键组件,我们不仅能够更好地理解Node.js的非阻塞I/O模型,还能学会如何优化我们的后端应用以提高性能和响应能力。文章将结合实例分析事件循环在处理大量并发请求时的优势,以及如何避免常见的编程陷阱,从而为读者提供从理论到实践的全面指导。
|
14天前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
35 3
|
18天前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
108 62
|
17天前
|
Web App开发 JSON JavaScript
Node.js 中的中间件机制与 Express 应用
Node.js 中的中间件机制与 Express 应用
|
3月前
|
存储 监控 NoSQL
MongoDB以其独特的优势和广泛的应用场景
MongoDB以其独特的优势和广泛的应用场景
93 8
|
2月前
|
存储 NoSQL 物联网
这些案例展示了MongoDB在不同行业中的广泛应用
这些案例展示了MongoDB在不同行业中的广泛应用
148 4