尽管我发现了与我类似的问题,但我无法独自解决问题。
在我的’../models/user’模型中,我想找到所有用户并将其放入数组,然后将该数组返回给控制器(在这里我将使用信息)。
这是我的代码:
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’参数作为函数参数传递给’find’,但没有结果。
最好的方法是使用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) }) }) }