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、后端程序把拿到的数据返回给浏览器。
原文地址:https://www.cnblogs.com/xz233/p/13556175.html