node(3)MVC代码结构模式moogoDB的学习

---恢复内容开始---html

1、 MVC代码结构模式

设计模式:观察者模式、中介者模式,这种模式,主要作的事情是处理类与类之间‘高内聚、低耦合’;node

代码架构模式:MVCMVVMMVPmysql

    Model:模型,处理数据的模型。sql

    View:视图部分,眼睛能看到的部分mongodb

   Controller:控制器,是view(视图层)model(数据层)的一个桥梁;数据库

2、数据库的学习

一、NOsql的学习npm

提示:NoSQL数据库分为四大类,我们只是学习了其中一种mongoDB(文档型数据库);json

二、安装MongoDB数据库设计模式

mongoDB官网:https://www.mongodb.com/数组

提示:①将压缩包解压到C\program files文件夹当中

经过高级系统设置安装路径

在终端当中输入:mongo -version 若是有数据显示出来讲明你的数据库安装成功;

三、开启数据库

若是你看到27017说明你的数据库开启了

-dbpath:表明的是你数据库仓库的路径

C\database 就是你数据库仓库的路径

提示:若是你想操做数据库,开启数据库的这个终端命令窗口不能关闭,重新的在开启一个终端命令窗口操做数据库;

四、基本的操做-数据库

重点:操做数据的时候,数据库必须开启来;  开启数据库 mongod -dbpath  c:\database

第一步mongo 开启REPL环境

第二步use xsgl   ---建立数据库

第三步:我们当年的mysql数据库我们称做为表-可是在mongodb数据当中没有表的概念,它叫作集合(collection

db.collection(集合的名字).insert(json):插入数据

 

第四步:查询所有的数据

查询数据:db.banji0920.find();     db.集合.find()

第五步:查询更加详细的数据

db.banji0920.find({"name":'xiaoming'})

五、增、查、改、删

http://www.runoob.com/mongodb/mongodb-dropdatabase.html 学习的地址

提示:操做数据库,必定要开启数据库。

    db.集合的名字.insert(json)

查    db.banji0920.find()->查询所有的数据

db.banji0920.find({“age”:17},{“sex”:’nv’}) ->查询的条件 且的形式

db.banji0920.find({“age”:{“$gt”:20}}) - >查询的条件是 要查询的数据的你年龄大于20岁的  大于

db.banji0920.find({“age”:{“$gte”:20}}) 大于等于

Db.banji0920.find({“age”:{“$lt”:20}})  小于

Db.banji0920.find({“age”:{“$lte”:20}}) 小于等于

db.banji0920.find({"$or":[{"name":"xiaogang"},{"name":"xiaozi"}]})  查询或的关系

 改        db.banji0920.find()

修改:db.banji0920.update({“name”:”xiaozi”},{“$set”:{“name”:xiaoxiami}});

两个参数:第一个参数修改的是谁      第二个参数:修改成什么

删     

show dbs  展现所有的数据库,可是我们发现,默认一个叫作local的数据库

 

db.dropDatabase()     删除数据库

Show collections    查询所有的集合

db.banji110.drop()  ---删除集合

 

3、可视化工具的 使用(mongobooster)

4、node操做数据库-mongoDB

概述:原生的操做mongoDB不是重点,由于我们一会会学习mongoose代替mongoDB

https://www.npmjs.com/package/mongodb

 

//在调用mongod模块的时候,这个对象打点一个属性MongoClient,返回一个MongoClient的对象
var  MongoClient = require('mongodb').MongoClient;

//数据库的地址
var  url = 'mongodb://localhost:27017/xsgl';

//连接数据库
MongoClient.connect(url, function(err,db) {

    if(!err){
        console.log("连接数据库成功");
    }else{
        console.log("连接数据库失败");
    }
});

提示:①如今的db参数就是你的数据库对象,你就能够操做它;当你引入mongoose的时候,mongodb已经捎带脚的也下载进来了,由于mongoose须要mongodb的支持;

 5、mongooses模块

官方手册:https://www.npmjs.com/package/mongoose

概述:mongoose模块,简单了mongodb操做,也就说对原生的mongodb进行了封装;

第一步:建立身份证  cnpm init

第二步:    下载mongoose模块

第三步:建立我们的app.js文件

 

//引入mongoose模块
var mongoose = require("mongoose");
//连接数据库
mongoose.connect("mongodb://localhost/xsgl",{useMongoClient:true});
cvar mongoose  = require("mongoose");
//描述你存储数据的key是什么类型的
var schema = new mongoose.Schema({
      'name':String,
      'age':Number,
      'xuehao':Number
});

//对外暴露一个类就能够了
var Student = mongoose.model("Student",schema);

//暴露类
module.exports = Student;

 

6、mongooses增、删、改、查

//第一种方式
//增:
var xiaoming = new Student({
       "name":"小明",
       "age":18,
       'xuehao':1001
});
//保存数据库
xiaoming.save((err)=>{
   if(!err) console.log("添加成功");
})
//第二种方式
Student.create({"name":"小红","age":12,"xuehao":1002},function  (err) {
       if(!err) console.log("添加成功");
})

 

 

 

注意:我们的集合是这个类名自动加了一个s

//这个删除的套路:先找到你要删除的数据,可是返回的是一个数组

//第一种方式
Student.find({"name":"小子"},function  (err,result) {
      var zhegeren = result[0];
       zhegeren.remove(function  (err) {
           if(!err) console.log("删除掉了");
       });
})
//第二种方式
Student.remove({"age":18},function  (err) {
     if(!err) console.log("删除成功");
})

//第一种方式
Student.find({"name":"小红"},function  (err,result) {
        var obj = result[0];
        obj.name = "贾成豪";
        obj.save();
})
//第二种方式
//Update(更新的是谁,更新为何,callBack)
Student.update({"name":"贾成豪"},{"$set":{"name":"小红"}},function  (err) {
      if(!err) console.log("更新成功");
})

 

Student.find({},function  (err,result) {
     console.log(result);
})
相关文章
相关标签/搜索