我陷入了一个递归函数中,该函数使用“ ExclusiveStartKey”及其内部async.series从dynamodb中获取数据。如何在async.series内部构造用于回调的代码
var finalArray = []
function scanQuery(params, callback) {
docClient.scan(params, (err, data) => {
if (err) {
callback(err);
} else {
if (typeof data.LastEvaluatedKey != "undefined") {
params.ExclusiveStartKey = data.LastEvaluatedKey;
scanQuery(params,() => {
callback();
})
}
else {
finalArray.push(data.Items);
callback(finalArray);
}
}
})
}
async.series(
[
function (callback) {
var params = {
TableName: "demo",
ProjectionExpression: "#id, #name, #created_date",
ExpressionAttributeNames: {
"#id": "id",
"#name": "name",
"#created_date": "created_date"
}
};
console.log("Scanning Cars table.");
scanQuery(params, (err, response) => {
if (err) callback(err)
// console.log(response);
callback(null,response)
})
},
function (callback) {
// do some more stuff ...
callback(null, 'tree');
}
],
// optional callback
function (err, results) {
console.log(err);
if (!err) {
// console.log(results);
// console.log(finalArray);
callback(results);
} else {
callback("test");
}
});
}
在这里,我想通过dynamoDb一次调用获得所有结果。 FinalArray应该最后包含所有条目。那么如何通过与async.series集成的回调来修改scanQuery函数