gpt4 book ai didi

javascript - 使用 Node JS 递归获取 DynamoDB 查询中的所有项目

转载 作者:数据小太阳 更新时间:2023-10-29 05:57:53 25 4
gpt4 key购买 nike

这可能更像是一个 JS/Async 问题,而不是 DynamoDB 特定问题 -

我想在 Amazon 的 DynamoDB 中使用散列键获取表中的所有项目。该表中还有范围键。

我正在使用 NodeJS 库,它是 AWS DynamoDB REST API 的包装器。 - Node-DynamoDB

DynamoDB 每次查询仅返回 1 MB 的结果。要获取结果提醒,它包括 lastEvaluatedKey 。我们可以将其包含在另一个查询中以获取另外 1 MB 的结果等等......

我在编写递归异步函数时遇到困难,该函数应该按顺序访问服务,直到我可以取回所有结果。 (对于我的用例,表永远不会超过 10 MB,查询不会失控)

一些用于说明的伪代码:

ddb.query('products', primarykey, {}, function(err,result){
//check err
if(result && result.lastEvaluatedKey){
//run the query again
var tempSet = result.items;
//temporarily store result.items so we can continue and fetch remaining items.
}
else{
var finalSet = result.items;
//figure out how to merge with items that were fetched before.
}
});

最佳答案

var getAll = function(primarykey, cb) {
var finalSet = [],
nextBatch = function(lek) {
ddb.query('products', primarykey, {
exclusiveStartKey: lek
}, function(err, result) {
if (err) return cb(err);

if (result.items.length)
finalSet.push.apply(finalSet, result.items);

if (result.lastEvaluatedKey)
nextBatch(result.lastEvaluatedKey);
else
cb(null, finalSet);
});
};

nextBatch();
};


getAll(primarykey, function(err, all) {
console.log(err, all);
});

关于javascript - 使用 Node JS 递归获取 DynamoDB 查询中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25241864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com