nodejs之mongodb操作


聲明: 當查詢到數據庫數據后,對數據庫數據進行遍歷,可以采用toArray()函數,具體實現可以看第六點

1、本地安裝mongodb

  安裝包:https://www.mongodb.com/download-center/community

2、npm安裝mongodb模塊

  npm install mongodb --save-dev
  npm install ejs --save-dev

3、創建express-route路由模塊文件 

var url=require('url');

    //封裝方法改變res  綁定res.send()
    function changeRes(res){
        res.send=function(data){
        res.writeHead(200,{"Content-Type":"text/html;charset='utf-8'"});
        res.end(data);
        }
    }

    //暴露的模塊
    var Server=function(){
        var G=this;   /*全局變量*/
        //處理get和post請求
        this._get={};
        this._post={};
        var app=function(req,res){
        changeRes(res);
        //獲取路由
        var pathname=url.parse(req.url).pathname;
        if(!pathname.endsWith('/')){
            pathname=pathname+'/';
        }
        //獲取請求的方式 get  post
        var method=req.method.toLowerCase();
        if(G['_'+method][pathname]){
            if(method=='post'){ /*執行post請求*/
            var postStr='';
            req.on('data',function(chunk){
                postStr+=chunk;
            })
            req.on('end',function(err,chunk) {
                req.body=postStr;  /*表示拿到post的值*/
                G['_'+method][pathname](req,res); /*執行方法*/
            })
            }else{ /*執行get請求*/
            G['_'+method][pathname](req,res); /*執行方法*/
            }
        }else{
            res.end('no router');
        }
        }

        app.get=function(string,callback){
        if(!string.endsWith('/')){
            string=string+'/';
        }
        if(!string.startsWith('/')){
            string='/'+string;
        }
        //    /login/
        G._get[string]=callback;
        }

        app.post=function(string,callback){
        if(!string.endsWith('/')){
            string=string+'/';
        }
        if(!string.startsWith('/')){
            string='/'+string;
        }
        G._post[string]=callback;
        }
        return app;
    }
    module.exports=Server();
View Code

4、連接並添加數據Demo

var http = require('http');
    var app = require('./module/express-route');
    var ejs = require('ejs');

    /*mongodb連接設置*/
    const  MongoClient = require('mongodb').MongoClient;
    const dburl = 'mongodb://localhost:27017';
    const dbName = 'test';
    const client = new MongoClient(dburl);
    /**/
    http.createServer(app).listen('8001');

    
    /**
     * 添加數據
     */
    app.get('/add',function (req,res) {
        client.connect(function(err) {
        if(err){//連接失敗
            console.log("Connected fail to server");
        }
        //連接成功
        console.log("Connected successfully to server");
        const db = client.db(dbName);
        db.collection('shop').insertOne({'name':"name-yangwenjie","age":28},function (error,result) {
            if(error){
            console.log("insert database faile");
            }
            console.log("insert database successfully");
            client.close();
        })
        });
    })

5、nodejs操作mongdb增刪改查操作並聯合ejs聯合使用

/**
 * 添加數據
 */
app.get('/add',function (req,res) {
    client.connect(function(err) {
        if(err){//連接失敗
            console.log("Connected fail to server");
        }
        //連接成功
        console.log("Connected successfully to server");
        const db = client.db(dbName);
        db.collection('shop').insertOne({'name':"name-yangwenjie","age":28},function (error,result) {
            if(error){
                console.log("insert database faile");
            }
            console.log("insert database successfully");
            client.close();
        })
    });
});

/**
 * 查找數據和EJS一起使用
 */
app.get('/find',function (req,res) {
    var list = [];
    client.connect(function (err) {
        if (err) {//連接失敗
            console.log("Connected fail to server");
        }
        //連接成功
        console.log("Connected successfully to server");
        const db = client.db(dbName);
        var result = db.collection('shop').find({ "age" : 38});
        result.each(function (err,data) {
           if(err){
               console.log(err);
           } else {
               if(data!=null){
                   list.push(data);
                   console.log("你好:"+list[0].name);
                   ejs.renderFile('練習/views/index.ejs',{list:list},function (err,data) {
                       if(err){
                           console.log(err);
                           return false;
                       }
                       console.log(data);
                       res.send(data);
                   });
               }else {//循環完成
                   console.log("循環完成"+list);
               }
           }
        })
    });
});

/**
 * 刪除文檔
 */
app.get('delete',function (req,res) {
    client.connect(function (err) {
        if(err){
            console.log("Connected fail to server");
        }
        console.log("Connected successfully to server");
        const db = client.db(dbName);
        //文檔和過濾條件
        db.collection('shop').deleteOne({"name":"name-yangwenjie"},function (err,result) {
            if(err){
                console.log("delete fail to server");
            }
            console.log("delete successfully to server");
            console.log(result);
        })
    })
})

/**
 * 更新文檔數據
 */
app.get('/update',function (req,res) {
    client.connect(function (err) {
        if(err){
            console.log("連接數據庫失敗!");
        }
        console.log("連接數據庫成功!");
        var db = client.db(dbName);
        db.collection('shop').updateOne({"name":"yangwenjie"},{$set:{"age":38}},function (err,result) {
            if(err){
                console.log("更新數據失敗");
            }
            console.log("更新數據成功!");
            console.log(result);
        })

    })
})

6、遍歷查找的數據建議采用toArray()進行遍歷

 

 var result = db.collection('user').find(req.body);
        result.toArray(function (err,data) {
            //console.log(data.username);
            //console.log(data.length);
            if(data.length>0){
                    //登陸成功
                req.session.userinfo=data[0];
                //res.render('product');
                res.redirect('/product');
                }else {
                    //登陸失敗
                    res.send("<script>alert('登陸失敗');location.href='/login'</script>")
                }
        })

注意:mongodb配置代碼

const  MongoClient = require('mongodb').MongoClient; //引用mongodb
    const dburl = 'mongodb://localhost:27017'; //數據庫url
    const dbName = 'test';    //數據庫名
    const client = new MongoClient(dburl); //創建一個客戶端
    client.connect(function(err) {
        if(err){
             console.log("Connected fail to server");
        }
        console.log("Connected successfully to server");
        const db = client.db(dbName);
        //添加數據庫操作代碼
        client.close();
    });

具體可以參考mongodb關於nodejs的官方文檔:http://mongodb.github.io/node-mongodb-native/3.1/quick-start/quick-start/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM