簡體   English   中英

node.js mongodb javascript范圍界定混亂

[英]node.js mongodb javascript scoping confusion

我正在開發一個不帶貓鼬的express.js應用程序。

我想做的是,將對mongodb的調用封裝在一個函數內,將該函數傳遞一些參數,然后從mongodb取回數據。

我遇到的問題由以下代碼解釋

function get_data()
{
    var mongo = require('mongodb'),Server = mongo.Server,Db = mongo.Db;
    var server = new Server('localhost', 27017, {auto_reconnect: true});
    var db = new Db('test', server); 

    db.collection('test_collection', function(err, collection) {

        collection.find().toArray(function(err, items) {
            var data = items;
        });
    });

    console.log(data);
    console.log("in get");
    return data;
}

如何返回從此函數從mongo db中提取的數組Array。

我想知道作用域在javascript中的工作原理,以及如何將這些項目放在變量中並從get_data函數返回它們。

答案之后

我修復了代碼。 現在可以正常工作,看起來像這樣。

function get_data(callback) { 
    var mongo = require('mongodb'),Server = mongo.Server,Db = mongo.Db;
    var server = new Server('localhost', 27017, {auto_reconnect: true});
    var db = new Db('test', server);

    db.open(function(err, db) {
        if (err) return callback(err);

        db.collection('test_collection', function(err, collection) {
            if (err) return callback(err);
            collection.find().toArray(callback);
        });
    });
}


get_data(function(err, items) {
    // handle error
    console.log(items);
});

由於這些項目是從MongoDB異步檢索的,因此函數get_data需要接受將用於返回結果的回調。 我相信您還需要顯式open數據庫連接。

function get_data(callback) {
    ...

    db.open(function(err, db) {
        if (err) return callback(err);

        db.collection('test_collection', function(err, collection) {
            if (err) return callback(err);
            collection.find().toArray(callback);
        });
    });
}

get_data(function(err, items) {
    // handle error
    console.log(items);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM