not nodejs node mongodriver mongoclient collection javascript node.js mongodb express

javascript - mongoclient - nodejs mongodriver



node.js mongodb javascript scoping confusiĆ³n (1)

Dado que los elementos se recuperan de MongoDB de forma asíncrona, la función get_data debe aceptar una devolución de llamada que se utilizará para devolver los resultados. Creo que también necesitarás open explícitamente la conexión de la base de datos.

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); });

Estoy desarrollando una aplicación express.js, sin mangosta.

Lo que intento hacer es encapsular llamadas a mongodb dentro de una función, pasarle a la función algún parámetro y recuperar los datos de mongodb.

El problema que me estoy encontrando se explica por el siguiente código

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; }

¿Cómo devuelvo los elementos Matriz que extraje de mongo db de esta función?

Quiero saber cómo funciona el alcance en JavaScript y cómo incluir los elementos en una variable y devolverlos desde la función get_data.

Después de la respuesta

Arreglé el código. Ahora funciona y se ve así.

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); });