node-mongoDB-02-封装-应用

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
云数据库 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
相关文章
|
1月前
|
开发框架 JavaScript 中间件
中间件应用Koa.js(Node.js)
【5月更文挑战第3天】我们添加了两个中间件。第一个中间件记录请求的开始时间,并在下一个中间件执行完毕后计算并打印出请求的总时间。第二个中间件与之前的示例相同,它设置响应体为 "Hello World"
28 6
中间件应用Koa.js(Node.js)
|
19天前
|
存储 人工智能 NoSQL
MongoDB 和 AI 赋能行业应用:电信和媒体
在本系列的下一篇文章中,我们将讨论 MongoDB + AI 在零售行业的应用
|
1月前
|
JavaScript 前端开发 持续交付
【专栏】Vue.js和Node.js如何结合构建现代Web应用
【4月更文挑战第27天】本文探讨了Vue.js和Node.js如何结合构建现代Web应用。Vue.js作为轻量级前端框架,以其简洁易懂、组件化开发、双向数据绑定和虚拟DOM等特点受到青睐;而Node.js是高性能后端平台,具备事件驱动、非阻塞I/O、丰富生态系统和跨平台优势。两者结合实现前后端分离,高效通信,并支持热更新、持续集成、跨平台和多端适配,为开发高性能、易维护的Web应用提供强有力的支持。
|
19天前
|
存储 NoSQL 数据处理
探索MongoDB:灵活、高性能的NoSQL数据库解决方案与应用实践
探索MongoDB:灵活、高性能的NoSQL数据库解决方案与应用实践
|
19天前
|
JavaScript 应用服务中间件 Apache
Node.js 创建第一个应用
Node.js 创建第一个应用
16 1
|
1月前
|
存储 NoSQL 物联网
【MongoDB 专栏】MongoDB 在物联网(IoT)领域的应用
【5月更文挑战第11天】MongoDB,一种灵活可扩展的非关系型数据库,在物联网(IoT)领域中大放异彩。应对海量设备产生的多样化数据,MongoDB的文档型数据结构适应性强,适合存储设备信息及传感器读数。其实时更新、强大查询语言、索引机制和扩展性(通过分片技术)满足物联网的高实时性、复杂查询和数据增长需求。尽管面临数据安全和管理挑战,MongoDB已广泛应用于智能家居、工业 IoT 和智能交通等领域,并有望随着物联网技术进步和与其他领域的融合,如人工智能、大数据,持续发展。未来,优化数据质量、提升并发处理能力将是关键,MongoDB将在物联网的智能未来中扮演重要角色。
【MongoDB 专栏】MongoDB 在物联网(IoT)领域的应用
|
1月前
|
存储 监控 NoSQL
【MongoDB 专栏】MongoDB 在实时数据分析中的应用
【5月更文挑战第11天】MongoDB,作为强大的非关系型数据库,擅长实时数据分析。其灵活数据模型适应多样化数据,分布式架构支持水平扩展,处理海量数据和高并发查询。应用于物联网、实时监控、金融交易分析及电商个性化推荐等领域。结合流处理技术和数据可视化工具,提升实时分析效能。然而,注意数据一致性和性能调优是应用关键。未来,MongoDB将持续发展,为企业实时数据分析带来更多可能性和机遇。
【MongoDB 专栏】MongoDB 在实时数据分析中的应用
|
1月前
|
缓存 监控 NoSQL
【MongoDB 专栏】MongoDB 的变更流(Change Streams)应用
【5月更文挑战第11天】MongoDB的变更流是实时监控数据库动态的机制,允许应用程序订阅并响应文档的插入、更新和删除事件。它提供实时性、灵活性和解耦性,适用于数据同步、实时通知、缓存更新等多种场景。然而,使用时需注意性能、错误处理和版本兼容性。随着技术发展,变更流将在构建智能实时系统中扮演更重要角色,为数据处理带来新机遇。
【MongoDB 专栏】MongoDB 的变更流(Change Streams)应用
|
1月前
|
存储 NoSQL 大数据
【MongoDB 专栏】MongoDB 在大数据场景下的应用
【5月更文挑战第11天】MongoDB,适用于大数据时代,以其灵活数据模型、高可扩展性和快速性能在大数据场景中脱颖而出。它处理海量、多类型数据,支持高并发,并在数据分析、日志处理、内容管理和物联网应用中广泛应用。电商和互联网公司的案例展示了其在扩展性和业务适应性上的优势,但同时也面临数据一致性、资源管理、数据安全和性能优化的挑战。
【MongoDB 专栏】MongoDB 在大数据场景下的应用
|
1月前
|
JavaScript 中间件 API
中间件应用Express.js(Node.js)
【5月更文挑战第3天】我们定义了一个名为 `logger` 的中间件函数。它接受请求对象、响应对象以及下一个中间件函数作为参数。当接收到请求时,它会打印出请求的 HTTP 方法和 URL,然后调用 `next()` 函数来将控制权传递给下一个中间件或路由处理器。我们使用 `app.use()` 方法将 `logger` 中间件添加到了应用级别的中间件堆栈中,这意味着它将对所有请求生效。
30 3
中间件应用Express.js(Node.js)