[英]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.