zoukankan      html  css  js  c++  java
  • mongoose操作数据库

    mongoose模块

    Mongoose简介

        Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用。
        Node是什么模型? 对象
        官方文档:https://www.npmjs.com/package/mongoose
        http://mongoosejs.com/
    

    Mongoose的操作流程

    • 安装mongoose
        npm install mongoose -D
        cnpm i mongoose -D/-S
    
    • 连接数据库

    使用mongoose连接数据库的前提条件是:

    1、mongo数据库已经运行。
    2、已经安装了mongoose包

        var mongoose = require("mongoose");
        // 连接字符串格式为mongodb://主机/数据库名
        mongoose.connect('mongodb://localhost/students');
    

    上面这句的意思是连接到本地的mongodb的students 数据库。

    扩展:

    // 连接本地mongodb ,本机的ip 127.0.0.1,端口:27017 数据库:students
    mongoose.connect("mongodb://127.0.0.1:27017/students",function(err){
       if(!err){//如果连接成功,则打印出connected to Mongodb
          console.log("connected to Mongodb");
       }else{
          throw err;//如果连接失败,则抛出异常
       }
    });
    
    • 新增数据
      先讲解一个概念 Schema:

    它可以理解为数据库模型骨架,可以看作工厂中模具一样,好比一个茶杯,喝水是茶杯最终的功能,茶杯本身就像是Model,那么茶杯的批量生产是需要靠工厂的模具成型的。Schema不仅定义了文档结构和使用性能,还可以有扩展插件、实例方法、静态方法、复合索引、文档生命周期钩子。

    Schema  :  一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力   钱的电板
    Model   :  由Schema发布生成的模型,具有抽象属性和行为的数据库操作对    钱的样板  
    Entity  :  由Model创建的实体,他的操作也会影响数据库                     钱
    

    存储数据步骤:定义Schema (骨架) > 创建model(模型)> Entity实例化方法。

    var Schema = mongoose.Schema;
    //通过Schema创建一个模式NewsSchema  
    var studentSchema  = new Schema({      
         name: String,
         age: String
    });
    

    studentSchema 类型有哪些:

    String
    Number
    Date
    Buffer
    Boolean
    Mixed
    ObjectId
    Array
    
    //通过模式studentSchema  创建一个模型studentModel 
    var studentModel = mongoose.model("students",studentSchema  );
    
    var instance1 = new studentModel (); 
    instance1.name="tangyan";
    instance1.age="18";
    //通过save方法保存
    instance1.save(function(err){
        if (err) {
           console.log('保存失败');  
           return;
        }
     });
    
    • 删除数据
      思路:

    1、删除数据首先要知道删除哪一条信息,需要知道信息的id.
    2、把对应id的数据查询出来,执行remove方法
    假如我们要删除id=”57e24521a755e1154039a403”的数据。

    var id=”57e24521a755e1154039a403”; 
    studentQueryModel.findById(id,function(err,doc){
       if(!doc){
          return next(new NotFound("Doc not found"))
       }else{
          doc.remove(function(){
             console.log('删除成功');
          })
       }
    });
    
    • 修改数据
      修改数据的思路:先把对应id的数据查询出来,对需要修改的字段重新赋值,然后执行save方法保存。
      假如我们要修改id=”57e24521a755e1154039a403”的数据。
    var id=”57e24521a755e1154039a403”; 
    
    studentQueryModel.findById(id,function(err,doc){
       //console.log(doc);
       doc.name="xiaotangyan" ;//把name修改为xiaotangyan
       doc.save(function(err){
          if(!err){
              console.log('修改成功');
          }else{
             throw err;
          }
       });
    });
    
    • 查询数据
      下面find第一个参数{}里面为空,表示查询所有的数据:
      docs表示查询的结果集合,可用于渲染ejs模板引擎。
    studentQueryModel.find({},function(err,docs){
    	console.log(docs);
    });
    

    功能分析

    主要包括三部分:

    新闻发布:发布新闻 一个表单,包括:新闻标题、作者、来源、发布时间、内容。
    新闻管理:新闻列表,点击修改进入修改页面,点击删除,直接删除掉。
    浏览新闻:点击新闻列表的标题进入查看新闻页面。

    系统界面的作用:填写数据和展示数据。
    mongoDB作用:保存数据。

    思考1:数据从页面到数据库要经历哪些过程?

    1、页面填写表单数据。
    2、表单提交数据到后端。(form里面指定action路径,提交方式: get或者post中任何一种)
    3、后端程序接收参数。
    4、后端程序保存数据到数据库。
    

    思考2:数据从数据库到页面要经历哪些过程?

    数据库不会主动给数据,都是浏览器先发起请求,再由后端程序去查询数据库的。

    1、浏览器发起一个请求。
    2、后端程序接收请求。
    3、后端程序查询数据库。
    4、后端程序把拿到的数据返回给浏览器。
    
  • 相关阅读:
    实验 7:OpenDaylight 实验——Python 中的 REST API 调用
    实验 6:OpenDaylight 实验——OpenDaylight 及 Postman实现流表下发
    实验 5:OpenFlow 协议分析和 OpenDaylight 安装
    实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令
    实验 3:Mininet 实验——测量路径的损耗率
    软件工程第一次作业——自我介绍
    实验 2:Mininet 实验——拓扑的命令脚本生成
    实验1、Mininet 源码安装和可视化拓扑工具
    第01组 Beta版本演示
    第01组 Beta冲刺(4/4)
  • 原文地址:https://www.cnblogs.com/xz233/p/13556175.html
Copyright © 2011-2022 走看看