我有一个带回调的函数,我在那里使用dynamoDB的“listTables”方法,它只返回100个表名,如果还有表,它会返回另一个名为“LastEvaluatedTableName”的字段,我们可以在新的在listTables中查询从提到的“LastEvaluatedTableName”查询另外100个表;如何在这个逻辑中用javascript中的回调进行递归?
我尝试过以下不正确的事情:
module.exports.ListTables = function (start, callback) {
var params;
if (start) {
params = {
"ExclusiveStartTableName": start
};
}
dynamodb.listTables(params, function (err, data) {
var totalData = [];
totalData.push(data);
if (data.LastEvaluatedTableName) {
data = module.exports.ListTables(data.LastEvaluatedTableName);
}
callback(err, totalData);
});
}
如果您需要更多说明,请与我们联系!
谢谢!
答案 0 :(得分:0)
您需要连接数据,而不是每次都替换它:
dynamodb.listTables(params, function (err, data) {
if (data.LastEvaluatedTableName) {
data.concat(module.exports.ListTables(data.LastEvaluatedTableName));
}
callback(err, data);
});
更新
根据评论中的信息,听起来像你需要这样的东西:
module.exports.ListTables = function (start, callback, totalData) {
var params;
if (start) {
params = {
"ExclusiveStartTableName": start
};
}
if (!totalData) {
totalData = [];
}
dynamodb.listTables(params, function (err, data) {
totalData = totalData.concat(data.TableNames);
if (data.LastEvaluatedTableName) {
module.exports.ListTables(data.LastEvaluatedTableName, callback, totalData);
}
else {
callback(err, totalData);
}
});
}