Witam,
W wolnym czasie piszę sobie pewne API. Podpinam właśnie pod nie MongoDb. Mam już gotowe metody z zapytaniami, ale mam problem z przekazywaniem danych z callback 'wyżej'. Kod jest następujący:
showUsers: function(db, object, callback){
var cursor = db.collection('users').find(object);
var data = [];
cursor.each(function(err, doc) {
assert.equal(err, null);
if (doc != null) {
data.push(doc);
} else {
callback(data);
}
});
},
dispatcher: function(callback, object){
var result = mongoc.connect(DBHOST, function(err, db) {
assert.equal(null, err);
console.log("Connected correctly to mongodb server");
var users = module.exports[callback](db, object, function(data){
db.close();
return data;
});
console.log(users);
});
}
W metodzie dispatcher() łączę się z mongo, po czym wywołuję metodę z odpowiednim query do bazy. Tam gdzie module.exports[callback]() w callback mogę bez problemu logować 'data', jednak gdy przypisuje całość do 'users' to późniejsze console.log(users); zwraca 'undefined'. Na początku sądziłem, że to niewielkie opóźnienie w dostarczaniu danych przez mongo, ale owrapowanie console.log(users) w setTimeout również nie pomaga. Ma ktoś jakieś sugestie jak rozwiązać problem ?