鍍金池/ 問答/HTML/ nodejs寫接口,中間件不執(zhí)行

nodejs寫接口,中間件不執(zhí)行

代碼如下:

let result = {
    code: '0',
    data: {
        datalist: [],
        pagecond: {
            page: 1,
            count: 1,
            pageSize: 5,
            totalPages: 1
        }
    }
};
router.get('/v1/ccb/signup/order/counterparty', function(req, res, next) {
    MongoClient.connect(url, function(err, db) {
        if (err) throw err;
        var dbo = db.db("runoob");
        dbo.collection("site").find({}).toArray(function(err, resu) { // 返回集合中所有數(shù)據(jù)
            if (err) throw err;
            result.data.datalist.push(resu[0]);
            db.close();
        });
    });
    next();
}, function(req, res, next) {
    res.send(result);
});

各位大神好,我是小白,我在中間件中使用的mongodb從數(shù)據(jù)庫讀取數(shù)據(jù),請問這樣合適嗎?
為啥第一次請求接口時返回的datalist是[],第二次再請求接口時才返回從數(shù)據(jù)庫查詢到的數(shù)據(jù)呢?

回答
編輯回答
不將就

沒用過mogo , 但是 這個 MongoClient.connect 方法是不是異步的?
最起碼 應(yīng)該這樣。

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    dbo.collection("site").find({}).toArray(function(err, resu) { // 返回集合中所有數(shù)據(jù)
        if (err) throw err;
        result.data.datalist.push(resu[0]);
        db.close();
        next()
    });
}, function(req, res, next) {
res.send(result);

}));

2017年8月23日 18:40