美文网首页
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