民间, 试图围绕以下问题包围我的大脑。我有一个输入数组通过http.POST进入,我想循环,启动多个dynamodb查询,组合输出,然后将此输出作为一个JSON对象返回。
我已经验证POST工作正常,数组构建正确,我需要做的就是触发几个DynamoDB调用,汇总每个结果,然后返回它。
由于这是异步,我将如何编写以下内容?
allVehicles: function (req, res, next) {
checkDB(req, res, next)
function checkDB(req, res, next) {
async.each(req.body, lookupDB, function(err) {
console.log("wtf err");
});
returnResponse(callback)
}
function lookupDB(uID) {
var checkUsers = {
TableName : 'tablename',
IndexName : 'license-index',
KeyConditions :
{
"entry":
{
"AttributeValueList" : [
{
"S" : '1'
}
],
"ComparisonOperator" : "EQ"
},
"license" :
{
"AttributeValueList" : [
{
"S" : uID
}
],
"ComparisonOperator" : "EQ"
}
}
}//var
db.query(checkUsers, function(err, data) {
if (err) {
console.log(err)
} else {
if (data.Count > 0) {
console.log("found ", data.Count")
}
}
});//dbq
}
function returnResponse(upstreamData) {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain; charset=UTF-8');
res.send(JSON.stringify(upstreamData, undefined, 2));
res.end();
}//fun
},
答案 0 :(得分:2)
尝试async.map
。
allVehicles: function (req, res, next) {
async.map(req.body, lookup, function(err, results) {
if (err) {
return next(err);
}
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain; charset=UTF-8');
res.send(JSON.stringify(results, undefined, 2));
res.end();
});
function lookup(id, done) {
db.query({
TableName: 'tablename',
IndexName: 'license-index',
KeyConditions: {
entry: {
AttributeValueList: [{ S: '1' }],
ComparisonOperator: 'EQ'
},
license: {
AttributeValueList: [{ S: id }],
ComparisonOperator: 'EQ'
}
}
}, done);
}
},