gpt4 book ai didi

amazon-dynamodb - 使用 DynamoDB 中的主 ID 数组查询多个数据

转载 作者:行者123 更新时间:2023-12-03 23:36:50 25 4
gpt4 key购买 nike

我正在开发一个使用 DynamoDB 作为数据库的应用程序。
我有一个用户表,例如:

{
id: 1, (Primary Key)
name: "Indranil"
}

现在我的要求是,如果 ids 像:[1,5,8],我有数组,我想使用单个查询加载所有用户。

现在我在查询中使用 id 作为 keyConditionExpreassion 并且我可以一个接一个地获取每个用户数据,但是它会导致多个查询。
    let readparams  = {
TableName : "user",
KeyConditionExpression: "# = :",
ExpressionAttributeNames:{
"#": "id"
},
ExpressionAttributeValues: {
":id":1
}
};

然后我看到表达式中有一个“IN”操作,但不能在 KeyConditionExpression 中使用,它可以在 FilterExpresion 中使用,但在 filterExpression 中我不能使用主键。而且,我不能在查询中只传递过滤器表达式,我还必须传递一个键表达式,但在我的情况下,我没有任何其他条件要检查。
    let readparams  = {
TableName : "user",
FilterExpression: "id IN (:id1, :id2)",
ExpressionAttributeValues: {
":id1":1,
":id2":1
}
};

所以最终我只剩下一个选择,在前端加载所有数据,然后在前端使用 id 过滤那些数据,但显然这根本不是一个好的解决方案。

有人可以指出这里的最佳解决方案是什么。

最佳答案

批量获取项目 API 可用于通过关键属性获取多个项目。如果您为表定义了排序键,则需要同时提供分区和排序键属性值。

Batch get item

一些示例代码:-

var table = "phone";

var params = {
"RequestItems" : {
"phone" : {
"Keys" : [ {
"phone_num" : "+14085551212",
"Country" : "USA"
},
{
"phone_num" : "+14085551313",
"Country" : "USA"
}
]
}
}

};

docClient.batchGet(params, function(err, data) {
if (err) {
console.error("Unable to read item. Error JSON:", JSON.stringify(err,
null, 2));
} else {
console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
}
});

关于amazon-dynamodb - 使用 DynamoDB 中的主 ID 数组查询多个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47328930/

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