2013-12-08 152 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()你的第一組數據,傳遞給另一個函數,或者只是在那裏做所有的工作,並有很多回調。