DynamoDB getItem just with the id (aws sdk)



有没有办法只使用id获得一个元素更多元素[具有相同id]?,而不使用属性name

let params = {
TableName: "TableName",
Key: {
id: { S: req.body.ProjectId },
// name: { S: req.body.name }
},
};
ddb.getItem(params, function (err, data) {
if (err) {
console.log("Error", err);
res.send(err);
} else {
console.log("Success", data);
res.send(data);
}
});

});

您在问题中遗漏了一些重要信息,但我猜id是您的分区键name

排序键在这种情况下,答案是肯定的-通过使用Query请求而不是GetItem请求,可以获得具有相同分区密钥id的所有项。

请阅读有关如何正确使用Query的文档。特别要注意的是,Query理论上可以返回一个很长的项目列表(具有相同的id但不同的name(,因此它被分页,即,您可能需要多次调用它(以适当的方式(才能获得所有这些项目。

简短回答:您可以根据表主键的定义提取一项。

更长版本:以下是getItem的API文档(此处(对Key字段的说明:

属性名称到AttributeValue对象的映射,表示要检索的项的主键。

对于主键,必须提供所有属性。对于例如,对于一个简单的主键,您只需要提供一个值用于分区键。对于复合主键,必须提供分区键和排序键的值。

GetItem基于主键返回一条记录。主键唯一标识Dynamo表中的记录。

要获取多条记录,请使用BatchGetItem并为要提取的记录传递多个主键。

最新更新