2016-03-28 15 views
1

1. Aşağıdaki işlev, koleksiyon raporundaki tüm belgeleri bir diziye iade etmelidir. Eğer listdocs() çağırırsanız o MongoClient.connectAsync dönmeden önce bile dönecektir böyleceDizide koleksiyondaki tüm belgelerin listesini döndürmek için bu işlevi nasıl yapılandırabilirim. Bluebird ile mongoldb kullanıyorum?

function listdocs(){ 
     var valuess=[]; 
     MongoClient.connectAsync(murl).then(function(db) { 


     return db.collection('reports').find({}).toArrayAsync(); 
     }).then(function(reports) { 
      valuess=reports; 


     }).catch(function(err) { 
      console.log(err); 
     }); 

    return valuess; 
    } 
+0

whats hatayı alıyorsanız? –

+0

Değeri boş bir dizi olarak alıyorum – Tie

cevap

0

Eğer node.js her şeyi bildiği gibi, zaman uyumsuz olduğunu. Bu nedenle, sonuçlar alındığında çağrılacak bir geri aramayı kabul etmek için listdocs'u değiştirmeniz gerekir. İşte

kod gibi görünmelidir nasıl:

function listdocs(callback) { 
    MongoClient.connectAsync(murl).then(function(db) { 
     return db.collection('reports').find({}).toArrayAsync(); 
    }).then(function(reports) { 
     callback(null, reports) 
    }).catch(function(err) { 
     callback(err, null); 
    }); 
} 

Ve bundan sonra böyle işlevini çağırabilirsiniz:

listdocs(function(err, data) { 
    if (err) { 
     // do something with the error 
    } 

    // do something with the result 
}); 
+0

Mükemmel çalışıyor :) Teşekkürler – Tie

İlgili konular