node.js回调函数generanddb

node.js callback function dynamodb

本文关键字:generanddb 函数 回调 js node      更新时间:2024-04-29

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

到目前为止,我已经能够编写一个函数来进行一次调用,然后返回它。我该如何编写第二个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.jshttps://github.com/caolan/async有什么我应该调查的吗?

而不是在这一行发回信息:

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()处理第一组数据,而是将其传递给另一个函数,或者只在其中完成所有工作并进行大量回调。