美文网首页
node.js 学习笔记 07

node.js 学习笔记 07

作者: GodlinE | 来源:发表于2017-06-20 21:30 被阅读0次

    数据库的学习

    • 数据库
      是用来存储数据的东西
    • 结构数据库(SQL)
      老式的数据库
    • 数据库
    • 字段
      一个数据库中可以又多张表,一张表中可以又多个字段
    • 数据处理不够灵活,但是安全性较高
    • 非结构数据库(NoSQL)
    • 数据库
    • 集合
    • 文档
      数据处理灵活,但是安全性低

    mongoDB 的使用

    • 第一个要设置对应的路径,用来放置对应的数据库的配置文件以及对应的一些数据库文件
    • 然后相当于打开数据库,通过 mongoD --dbpath C:\mongo 路径名称来打开数据库
    • 注意:数据库打开不能关闭,就是不能把对应的命令行终端关闭
    • 需要再创建一个新的命令行终端
    • 使用 mongo 命令设置环境
    • 可以通过 show dbs 查看数据库
    • 可以通过 use来创建数据库,也可以通过这个命令来使用数据库
    • 如果没有这个数据库, use就表示创建数据库,如果要是有,就表示使用这个数据库
    • 然后我们需要设置数据,注意我们操控的是数据库中的集合,就是操控集合
    • 通过对应的命令来操控集合
    • 我们通过命令行操控集合的时候,如果没有对应的集合,系统会自动创建该集合
    • mangoDB 安装之后是局部的,需要操作环境变量将其提升至全局

    数据库的使用

    var express = require('express');
    var MongoClient = require('mongo').MongoClient;
    //当接受到请求后,就去链接数据库
    var app = express();
    app.get('/',function(req,res){
        //连接数据库
        //第一个参数表示数据库的地址
        var dataBaseUrl = "mongodb://localhost:27017/test1"
        //连接数据库是一个异步操作
        //凡事异步操作都需要回调
        MongoClient.connect(dataBaseUrl,function(err,db){
            //err 表示错误,就是表示如果有错,那么表示对应的数据库没有链接成功
            //db 可以用来操控数据库中的集合,进行增删改查
            if(err){
                console.log('数据库连接失败');
                return;
            };
            //连接成功后,我们就可以往数据库的集合中添加文档数据
            //如果集合也不存在,系统会自动创建 
            //如果没有集合,后台系统会自动创建集合
            //插入数据的时候,也是异步的,所以也需要回调
            db.collection('teacher').insertOne({'name':'xiaoming','age':18},function(err.result){
                if(err){
                    console.log('插入数据失败');
                    return;
                };
                res.send(result);
                //数据库在使用完毕后要手动关闭
                db.close();
            })
        })
    })
    app.listen(3000);
    
    var expres = require('express');
    var ejs = require('ejs');
    var MongoClient = require('mongodb').MongoClient;
    var app = expres();
    //设置渲染模板
    app.set('view engine','ejs');
    /*当接受到请求后,获取数据后,然后渲染界面*/
    
    //设置连接数据库的地址
    var dataBaseUrl = 'mongodb://localhost:27017/test1';
    app.get('/',function (req,res) {
    
        MongoClient.connect(dataBaseUrl,function (err,db) {
            if (err) {
                console.log('连接数据库失败');
                return;
    
            }
    
            //获取数据库中的内容然后,给使用ejs给对应的界面设置
            //拿出的数据是一个游标,我们可以通过each方法来遍历游标
            //不可以理解成集合
            var cursor = db.collection('teacher').find();
    
            //设置一个数组用来记录每一条dom
            var resut = [];
            //遍历游标
    
    
            cursor.each(function (i,dom) {
    
                //dom表示每一条记录
                //所以只要这个记录不是空,我们就记录这个文档(每一条数据json)
                if(dom !=null){
                    //添加
                    resut.push(dom);
                }else{
                    //表示遍历完成
                    // 渲染界面
                    res.render('index',{
                        result:resut
                    });
                    //关闭数据库
                    db.close();
                }
            })
        })
    });
    
    //设置添加的路由
    app.get('/add',function (req,res) {
        //渲染界面
        res.render('add');    
    });
    //设置提交路由
    app.get('/submitData',function (req,res) {
        
        //插入数据
        //获取提交的参数
        var name = req.query.name;
        var age = req.query.age;
    
        //连接数据库
        MongoClient.connect(dataBaseUrl,function (err,db) {
            //错误处理
            if(err){
                console.log('数据库连接失败');
                return;
            }
            //插入数据       db.collection('teacher').insertOne({'name':name,'age':age},function (err,result) {
    
                if(err){
                    console.log('插入失败');
                }
                res.send('插入数据成功');
                db.close();
            })
        })
    })
    app.listen(3000);
    

    封装增删改查功能

    
    /*我就把和数据库相关的操控数据的操作都放在这个js文件中
    * \以后想要使用数据库操控数据,我们只需要把这个文件到人,然后始用对应的方法就可以
    * 实现增加,修改,删除,查找
    * */
    //因为增加删除修改以及查找都需要连接数据库,所以为了方便,我们最好把连接数据库的代码封装成一个函数
    //1.封装一个连接数据库的函数
    var MongoClient = require('mongodb').MongoClient;
    
    function _conmect(callBack) {
        
        //1.获取连接的数据库,当连接数据库的时候,如果没有对应的数据库,系统会自动创建
        
        var url = 'mongodb://localhost:27017/test1';
        //2.连接
        MongoClient.connect(url,function (err,db) {
            //当连接完成数据库后,我们需要做对应的数据库的增加删除修改以及查询操作
            //需要涌到db,我们需要把对应的这些操作放在函数中,所以在对应的函数中我们需要使用db
            //需要把db传递给别的函数,可以使用回调
            
            callBack(err,db);        
        })
        
    };
    //2.实现插入功能
    //这里需要三个参数
    //第一个:表示插入的集合
    //第二个表示插入的数据,就是一个json
    //第三个表示,插入的返回的结果,返回的结果一把使用回调
    
    exports.inserOne = function (collectionName,json,callBack) {
        //调用方法连接数据库,然后做对应的操作
        _conmect(function (err,db) {
            db.collection(collectionName).insertOne(json,function (err, result) {
                callBack(err,result);
                db.close();            
            })        
        })    
    };
    ///3.实现查询
    //第一个参数表示集合的名称
    //第二个表示查询的条件
    //第三个表示回调
    exports.find = function (collectionName,json,callBack) {
        _conmect(function (err,db) {
            var result = [];
            //
            var cursor = db.collection(collectionName).find(json);
            //遍历游标
            cursor.each(function (err,dom) {
                
                //如果dom不为空就添加,如果为空返回对应的结果,关闭数据库
                if(dom != null){
                    result.push(dom);
                }else{
                    //把数据传递出去
                    callBack(err,result);
                    
                    db.close();                
                }            
            })        
        })    
    };
    //4.删除
    exports.removeMany = function (collectionName,json,callBack) {
        
        _conmect(function (err,db) {
            
            //删除数据
            db.collection(collectionName).removeMany(json,function (err,result) {
                
                callBack(err,result);
                db.close();           
            })        
        })    
    };
    //5.修改,修改必须首先根据第一个json找到对应的数据,然后根据第二个json来去顶改成的数据
    //所以需要四个参数,定义json表示要查找的数据,第二个表示修改成为的数据
    exports.updateMany = function (collectionName,json1,json2,callBack) {
        _conmect(function (err,db) {
           db.collection(collectionName).updateMany(json1,json2,function (err,result) {
                callBack(err,result);
                db.close();            
            })        
        })    
    }
    
    /**
     * Created by Administrator on 2017/6/20.
     */
    
    var express = require('express');
    var db = require('./models/db.js');
    
    var app = express();
    //设置增加 ,删除,修改和查找的路由
    app.get('/insert',function (req,res) {
        //调用数据库的方法
        db.inserOne('teacher',{'name':'addData','age':20},function (err,result) {
            if(err){
                console.log('插入数据失败');
                return;
            }
            res.send(result);
        })
    });
    //处理查找的路由
    app.get('/search',function (req,res) {
        
        //使用对应的方法来查找对应的数据
        db.find('teacher',{},function (err,result) {
            if(err){
                console.log(err);
                return;
            }
            console.log(result);
            res.send('查找成功');        
        })  
    });
    //处理删除的路由
    app.get('/delete',function (req,res) {
        db.removeMany('teacher',{'name':'xiaoming'},function (err,result) {
            if(err){
                console.log(err);
                return;
            }
            // res.write(result);        
            res.send('删除成功');
       
        })   
    })
    app.listen(3000);
    

    相关文章

      网友评论

          本文标题:node.js 学习笔记 07

          本文链接:https://www.haomeiwen.com/subject/xgsaqxtx.html