nodejs下のmongoDBの使用


一、DAO層がなく、直接データベースを操作する
/**
 * Created by Danny on 2015/9/25 9:16.
 */
var express = require("express");
var app = express();
var MongoClient = require('mongodb').MongoClient;


app.get("/",function(req,res){
     
    //url        。/     
    //        ,    ,              
    var url = 'mongodb://localhost:27017/haha';
    //     
    MongoClient.connect(url, function(err, db) {
     
        //              ,db             
        if(err){
     
            console.log("       ");
            return;
        }
        console.log("       ");
        //    ,       ,     ,       
        db.collection('student').insertOne({
     
            "name" : "  ",
            "age" : parseInt(Math.random() * 100 + 10)
        }, function(err, result) {
     
            if(err){
     
                console.log("    ");
                return;
            }
            //        ,result      。
            //console.log(result);
            res.send(result);
            db.close();
        });
    });
});

app.listen(3000);
二、パッケージDAO層(推奨)(Data Access Objectデータアクセス対象は対象向けデータベースインターフェース、DAO類)
まずdb.jsを作成して、データベースに接続します.
/**
 * Created by Danny on 2015/9/25 9:31.
 */
//                    
var MongoClient = require('mongodb').MongoClient;
var settings = require("../settings.js");
//         ,        ,            
//        
function _connectDB(callback) {
     
    var url = settings.dburl; // settings   ,      
    //     
    MongoClient.connect(url, function(err, db) {
     
        if (err) {
     
            callback(err, null); // db null        
            return;
        }
        callback(err, db);
    });
}

//    
exports.insertOne = function(collectionName, json, callback) {
     
    _connectDB(function(err, db) {
     
        db.collection(collectionName).insertOne(json, function(err, result) {
     
            callback(err, result);
            db.close(); //     
        })
    })
};

//    ,      。args    {"pageamount":10,"page":10}
exports.find = function(collectionName, json, C, D) {
     
    var result = []; //    
    if (arguments.length == 3) {
     
        //    C  callback,  D   。
        var callback = C;
        var skipnumber = 0;
        //    
        var limit = 0;
    } else if (arguments.length == 4) {
     
        var callback = D;
        var args = C;
        //       
        var skipnumber = args.pageamount * args.page || 0;
        //    
        var limit = args.pageamount || 0;
        //    
        var sort = args.sort || {
     };
    } else {
     
        throw new Error("find       ,   3 ,  4 。");
        return;
    }

    //     ,        
    _connectDB(function(err, db) {
     
        var cursor = db.collection(collectionName).find(json).skip(skipnumber).limit(limit).sort(sort);
        cursor.each(function(err, doc) {
     
            if (err) {
     
                callback(err, null); //   callback           
                db.close(); //     
                return;
            }
            if (doc != null) {
     
                result.push(doc); //      
            } else {
     
                //    ,        
                callback(null, result);
                db.close(); //     
            }
        });
    });
}

//  
exports.deleteMany = function(collectionName, json, callback) {
     
    _connectDB(function(err, db) {
     
        //  
        db.collection(collectionName).deleteMany(
            json,
            function(err, results) {
     
                callback(err, results);
                db.close(); //     
            }
        );
    });
}

//  
exports.updateMany = function(collectionName, json1, json2, callback) {
     
    _connectDB(function(err, db) {
     
        db.collection(collectionName).updateMany(
            json1,
            json2,
            function(err, results) {
     
                callback(err, results);
                db.close();
            });
    })
}

exports.getAllCount = function(collectionName, callback) {
     
    _connectDB(function(err, db) {
     
        db.collection(collectionName).count({
     }).then(function(count) {
     
            callback(count);
            db.close();
        });
    })
}
setting.js
/**
 * Created by Danny on 2015/9/25 11:31.
 */
module.exports = {
     
    "dburl" : "mongodb://localhost:27017/haha"
}
app.jsでデータベース操作を調べます.
var express = require("express");
var app = express();
var db = require("./model/db.js");
var session = require("express-session");

app.use(session({
     
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: true
}));

app.set("view engine", "ejs");


app.get("/", function(req, res) {
     
    if (req.session.login == "1") {
     
        res.send("  " + req.session.username);
    } else {
     
        res.send("      ");
    }
});

app.get("/login", function(req, res) {
     
    res.render("denglu");
});

app.get("/checklogin", function(req, res) {
     
    var tianxiedeusername = req.query.username;
    var tianxiedepassword = req.query.password;
    //         ,           ,    。
    //       ,        ,     ;
    //       ,         ,    
    //            ,            
    db.find("users", {
      "username": tianxiedeusername }, function(err, result) {
     
        if (result.length == 0) {
     
            res.send("        ,        ");
            return;
        }
        var shujukuzhongdepassword = result[0].password;
        if (shujukuzhongdepassword == tianxiedepassword) {
     
            req.session.login = "1"; //         ,    ,  session      
            req.session.username = result[0].username;
            res.send("    !  " + result[0].username);
        } else {
     
            res.send("    !");
        }
    })
});

app.listen(3000);