有没有办法只使用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并为要提取的记录传递多个主键。