gpt4 book ai didi

node.js - DynamoDB - 扫描不返回所有项目

转载 作者:行者123 更新时间:2023-12-05 01:35:12 26 4
gpt4 key购买 nike

我在使用 Node.js 函数扫描 DynamoDB 中的表时遇到了一些麻烦。

当我在函数中扫描时,我得到了 2 行,但在 AWS 控制台中扫描时,我得到了 3 行。

按照下面的代码:

utilsAWS 扫描函数:

scanDocuments(params) {
return new Promise((resolve, reject) => {
var docClient = new this.AWS.DynamoDB.DocumentClient();

console.log(`Querying ${params.TableName}...`);

docClient.scan(params, function (err, data) {
if (err) {
console.error(
"Unable to query. Error:",
JSON.stringify(err, null, 2)
);
return reject(err);
} else {
console.log("Query succeeded.");
return resolve(data.Items);
}
});
});
}

//消费扫描函数

var params = {
TableName: 'minha-redacao-redacoes',
FilterExpression: "#e = :cpfAluno",
ExpressionAttributeNames: {
"#e": "cpfAluno",
},
ExpressionAttributeValues: {
":cpfAluno": `8509754....`
},
};
try {
const res = await utilsAWS.scanDocuments(params);

console.log(res.length); //2

} catch(err) {
console.error(err);
}

但是看看 AWS 控制台:

scan by console

node.js 函数扫描时没有找到行id: f3ebb776-13eb-4395-884e-e81f23044ca1。为了部分解决这个问题,我创建了 f3ebb776-13eb-4395-884e-e81f23044ca1_manual 文档。

有人知道这个问题的最终解决方案吗?

最佳答案

假设所有 3 条记录实际上都满足过滤条件,您应该检查响应的 LastEvaluatedKey 属性。

尽管涉及的项目数量很少,但不能保证 scan 操作会在第一个响应中返回所有匹配的元素。契约(Contract)是:

  • 如果:LastEvaluatedKey 为空,则您位于结果的最后
  • 否则:您需要使用参数 ExclusiveStartKey 重复扫描操作以恢复扫描。

更多信息 in the official docs .

关于node.js - DynamoDB - 扫描不返回所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63174955/

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