2013-12-08 125 views
1

Folks, 我正在编写一个API函数,需要对后端DynamoDB表进行多次调用。返回的JSON结果需要合并,然后作为单个响应返回给调用者。我怎么会写这个,因为我似乎没有完全写这个异步...node.js回调函数dynamodb

到目前为止,我已经能够编写函数来进行一次调用,然后返回它。我将如何编程第二个db.query?

var restify = require('restify'); 
var fs = require('fs'); 
var AWS = require('aws-sdk'); 
AWS.config.update({region: 'us-east-1'}); 
var db = new AWS.DynamoDB(); 

module.exports = { 
    license: function (req, res, next) { 
     var params = { 
      TableName : 'tableA', 
      KeyConditions : 
      { 
       "myHashKey": 
       { 
        "AttributeValueList" : [ 
        { 
         "S" : "1" 
        } 
        ], 
        "ComparisonOperator" : "EQ" 
       }, 
       "myRangeKey" : 
       { 
        "AttributeValueList" : [ 
        { 
         "S" : req.params.rangekeyA 
        } 
        ], 
        "ComparisonOperator" : "EQ" 
       } 
      } 
     } 

     data = db.query(params, function(err, data) { 
      if (err) { 
       console.log(err); 
        } 
      else { 
       res.statusCode = 200; 
       res.setHeader('Content-Type', 'text/plain; charset=UTF-8'); 
       res.send(JSON.stringify(data, undefined, 2)); 
       res.end(); 
      } 
     }); 
     return next(); 
    }, 
}; 

是async.js https://github.com/caolan/async东西我应该看看?

回答

1

而不是发送信息回到这一行:

res.send(JSON.stringify(data, undefined, 2)); 

定义的另一个功能,下面,如:

function nextDBQuery(data) 
    //query db, do more stuff, yada yada, 
    //pass on to another similar function 
} 

并在那儿把你的数据:

nextDBQuery(data); 

基本上,而不是res.send()你的第一组数据,传递给另一个函数,或者只是在那里做所有的工作,并有很多回调。