1. 程式人生 > >node.js-mongodb封裝分頁查詢

node.js-mongodb封裝分頁查詢

limit表示讀取條數

skip表示越過的條數

db.集合名.stats().count     查詢集合中所有條數

db.js

//這個模組裡封裝了所有對資料庫的常用操作,不管資料庫的什麼操作,都需要連線資料庫
var MongoClient = require("mongodb").MongoClient;
function _connectDB(callback) {
    var url = "mongodb://127.0.0.1:27017/haha";
    //連結資料庫
    MongoClient.connect(url, function (err, db) {
        callback(err, db);
    });
}
//分頁查詢資料,找到所有資料
exports.findByFen = function (collectionName, data, C, D) {
    var result = [];   //結果陣列
    if(arguments.length == 3){
        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;
        var limit = args.pageamount;
    } else {
        throw new Error("函式引數個數不對");
        return;
    }

    //連結資料庫
    _connectDB(function (err, db) {
        var cursor =db.collection(collectionName).find(data).skip(skipnumber).limit(limit);
        cursor.each(function(err, doc) {
            if(err){
                callback(err, null);
db.close();
                return;
            }
            if (doc != null) {
                result.push(doc);    //放入結果陣列
            } else {
                //遍歷結構,沒有更多的文件了
                callback(null, result);
db.close();
            }
        });
    });
}

呼叫:

app.get("/fen",function (req, res) {
    //這個頁面需接收一個page引數
    var page = parseInt(req.query.page);      //express中讀取get引數很簡單
    db.findByFen("teacher", {}, {"pageamount":3,"page":page}, function (err, result) {
        res.send(result);
    });
});