首页 > 解决方案 > 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 运算符之外还有其他方法可以解决这个问题吗?

标签: node.jsamazon-dynamodbin-operator

解决方案


根据经验,扫描你的桌子几乎总是一个糟糕的主意。不能保证性能(它们对大表不利),而且非常昂贵。DynamoDB 在设计时并未考虑到扫描

在您的情况下,您似乎正在寻找BatchGetItem(假设Id您提到的是您的主键),您可以在其中使用单个查询从表中获取大量项目。


推荐阅读