私は、マングースなしで、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から取り出したアイテム配列を返すにはどうすればよいですか。
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);
});