node.js - Dynamodb - 使用 IN 运算符 ['shirt','pant'] 获取所有项目,Js
问题描述
const getItemDetailsInCart=(products)=>{
const items={};
Object.keys(products).forEach((item,index)=>{
items[`:${item}${index}`]=item;
});
var getCartDetailParams = {
TableName : "BorderFreeProducts",
FilterExpression : "Id IN ("+Object.keys(items).toString()+ ")",
ExpressionAttributeValues:{}
};
getCartDetailParams['ExpressionAttributeValues']=items;
return ddb.scan(getCartDetailParams).promise();
}
我写过这样的扫描,但是如果产品数量增加,处理参数会增加。除了 IN 运算符之外还有其他方法可以解决这个问题吗?
解决方案
根据经验,扫描你的桌子几乎总是一个糟糕的主意。不能保证性能(它们对大表不利),而且非常昂贵。DynamoDB 在设计时并未考虑到扫描
在您的情况下,您似乎正在寻找BatchGetItem(假设Id
您提到的是您的主键),您可以在其中使用单个查询从表中获取大量项目。
推荐阅读
- java - 我应该怎么做才能获得我的 javafx spring boot 桌面应用程序的 OAuth2 访问令牌?
- mysql - MySQL:查询奇怪的行为 - 在 FROM 之前需要新行才能成功
- amazon-web-services - 如何将 Sentry 设置为 AWS lambda 函数?很多错误
- java-8 - 为什么流不受限,limit() 之前有 filter() 吗?
- php - 计算多个数组的匹配元素
- r - 为数据框中的每个唯一组复制行
- android - 片段中的getColor
- c++ - 计算直角三角形:如何提高时间复杂度?
- javascript - highchart中的分段标记
- visual-studio - Visual Studio 的 AndroidApkSigner 在密钥库中找不到密钥