Node.js MongoDB collection.find()。toArray什么都不返回

时间:2017-07-15 13:51:20

标签: javascript node.js mongodb

虽然我发现了与我相似的问题,但我无法独自解决问题。

在我的' ../ models / user' model我希望找到所有用户并将它们放入数组中,并将该数组返回给控制器(我将使用该信息)。

这是我的代码:

var mongoDatabase = require('../db');
var database = mongoDatabase.getDb();

function find() {
    var test;
    database.collection("customers").find().toArray( function(err, docs) {
        if(err) throw err;
        console.log(docs); //works fine
         //I'd like to return docs array to the caller
        test = docs;
    });

    console.log(test); //test is undefined  
}

module.exports = {
    find
};

我也注意到了,' console.log(test)'之前是#console; log(docs)'。我试过传递' docs'参数作为函数参数来找到'但没有结果。

1 个答案:

答案 0 :(得分:2)

最好的方法是使用Promises。这样做。

function getUsers () {
  return new Promise(function(resolve, reject) {
     database.collection("customers").find().toArray( function(err, docs) {
      if (err) {
        // Reject the Promise with an error
        return reject(err)
      }

      // Resolve (or fulfill) the promise with data
      return resolve(docs)
    })
  })
}