【发布时间】:2015-06-13 17:42:31
【问题描述】:
我已经阅读了很多关于如何链接异步函数的帖子,但我似乎无法正确理解它!
如标题所示。我正在尝试将 mongoskin 数据库调用链接在一起,这样我就可以分块收集所有信息,然后最终在响应中发送累积的结果。
我有对象用户:
var User = {
username: 'someusername',
accounts: [{name: 'account_1'}, {name: 'account_2'}]
}
对于每个帐户,我需要收集数据,然后在响应中发送累积的数据。所以我使用以下 for 循环来迭代帐户:
var promise = require('bluebird');
var db = require('mongoskin').db('mongodb://localhost/someDB');
for(var x in user.accounts){
//Fetch account data
user.accounts[x].accountData = fetchAccountData(user.accounts[x].name);
}
//Finally send the collected response
response.send(user);
函数 fetchAccountData 如下所示:
function fetchAccountData(screen_id){
db.collection('master')
.aggregate([
{$match: {screen_id: screen_id}}
], function(err, res){
if(err)
return null;
else{
console.log('Done', screen_id);
return res;
}
});
}
我怎样才能将其链接到以下算法:
start:
for each account:
fetchDataForAccount
Finally:
Send Response
【问题讨论】:
标签: javascript node.js asynchronous promise bluebird