amazon-web-services - 如何从另一个表中查询和映射数据?
问题描述
我有 DynamoDB 表订单、产品和用户。
在订单中,我有prouctid
和user_email
。
我想使用从订单表中获取每个产品详细信息productid
。
async function getUserOrders(id) {
let params = {
TableName: table_name_orders,
IndexName: "UserEmail",
KeyConditionExpression: "#email = :v_email",
ExpressionAttributeNames: {
"#email": "user_email",
},
ExpressionAttributeValues: {
":v_email": id,
},
};
let allData = await dynamodb.query(params).promise();
return buildResponse(200, allData.Items);
}
在此,我正在查询特定用户的所有订单,该订单具有指向产品的产品 ID,我想获取每个订单的每个产品数据,我该如何获取这些数据。
有没有像 populate(Mongodb) 这样的函数用数据填充数组中的每个项目?
解决方案
您可以使用 DynamoDB batchGetItem API - https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html
java中的示例:-
// 产品表 hashKeys 列表
列表idList;
// 使用 Java SDK 进行 BatchGet
Map<String, TableName.class> 声明 = dynamoDBMapper.batchLoad(Collections.singletonMap(TableName.class, idList.stream().distinct() .map(i -> new KeyPair().withHashKey(i)).collect( Collectors.toList()))).get("").stream() .map(object -> (TableName class) object).collect(Collectors.toMap(Claim::getClaimId, Function.identity(), (i1 , i2) -> i2));
推荐阅读
- single-sign-on - 通过 HTTP 重定向绑定到 ADFS 的 SAML 注销请求以请求者的身份获得响应而不是成功 - 从浏览器发起的请求
- firebase - 我正在尝试使用flutter和firebase制作一个杂货应用程序,一切正常,但是当我按下复选框时,它会检查所有这些
- sql - 从 BigQuery 到数据洞察的日期格式
- laravel - 如何在 Laravel 8 中将订单发票号黑色传递给查看
- xamarin - 如何在 Xamarin 中调整和压缩图像文件的大小
- javascript - 使用动态图像实现自动完成
- java - JavaFX KeyEvent.consume() 无法停止事件传播
- javascript - 从 Web 扩展的后台脚本中访问 about:addons 的内容
- python - 正方体 OCR 参数
- node.js - 获取 bcrypt 所需的错误数据和盐参数?