2015-05-26 32 views
0

我需要遍历用户的数组,并获取有关每一个数据库中的信息。我正在尝试使用异步库的映射函数,但我无法让它接受我的迭代器。我有这样的事情:许多异步数据库获取结果的查询

async.map(arr, getInfo(id), function(err, results){ 
    // do stuff with the results 
} 

getInfo(id, callback){ 
    db.myCollection.find({query: params}, {projections: true}, function(err, info){ 
    callback(err, info) 
    }) 
} 

我得到的迭代器(x.value,功能(ERR,V){ ^ 类型错误:未定义是不是一个函数

其他错误中,同时尝试不同的东西。基本上,我需要从分贝响应的数据结构在其中。

回答

1

是100%肯定我们需要看到您的阵列和数据,但是从你贴的代码,它看起来像你'以错误的方式传递函数。

你传递一个已经收到一些参数的函数? 我假设你的数组中包含的ID,所以你应该通过函数以正确的方式映射:

变化:

async.map(arr, getInfo(id), function(err, results) 
         ^^^ 

到:

async.map(arr, getInfo, function(err, results){ 
+0

是啊,是照顾它。我仍然对如何操作getInfo中的数据感到困惑。我只是把它当作函数被调用一次,数组中的每个对象都被用作参数?是否需要从getInfo返回所需的结果或以某种方式自动执行? – user137717

+0

也db的查询都是异步的,所以我从数据库查询回调或getInfo结束返回? – user137717

+0

map等待数组中的所有函数,因此必须在处理每个记录(成功或失败)后调用回调函数。而且你的函数应该就像它在一个记录上运行一样(因为它实际上是这样做的)。此外,如果这工作,我会很感激,如果你接受它作为答案。谢谢! –