【发布时间】:2018-04-06 04:16:57
【问题描述】:
在 DynamoDB 表中,我有一个具有以下方案的项目:
{
id: 427,
type: 'page',
...other_data
}
在查询主索引 (id) 时,我得到了按预期返回的项目。
在 AWS DynamoDB Web 应用程序中使用 scan 操作来获取所有类型为 page 的项目,包括此缺失项目在内的 188 个项目将被返回。但是,使用 AWS 开发工具包在 Lambda 内部执行此扫描操作,仅返回 162 个项目。部分代码如下:
const params = {
TableName: <my-table-name>,
FilterExpression: '#type = :type',
ExpressionAttributeNames: { '#type': 'type' },
ExpressionAttributeValues: { ':type': 'page' }
};
dynamodb.scan(params, (error, result) => {
if (error) {
console.log('error', error);
} else {
console.log(result.Items); // 162 items
}
});
这里缺少什么?
【问题讨论】:
-
您是否尝试过将 ConsistentRead 设置为 true?如果您已尝试多次但只是为了丢弃您因为读取默认最终一致性而丢失了记录,这无关紧要
-
@Daniel 不幸的是,这并没有解决它。但是,我刚刚发现实现stackoverflow.com/a/44590524/5550032(已接受的答案)对我有用。显然我达到了某种极限。或许从 type 属性创建 GSI 会更好。
标签: node.js amazon-web-services amazon-dynamodb aws-lambda