查询 dynamodb 特定字段

The*_*rus 5 javascript amazon-web-services amazon-dynamodb

如何在 dynamodb 中查询匹配特定规则的所有项目?

我正在建立一个在线商店(如 Asos),在 dynamodb 中我有一个产品表。所有产品都有“类别”字段。所以我只想做一个简单的查询,我说类似的话

FROM products WHERE category == 'trainers'
Run Code Online (Sandbox Code Playgroud)

我已经设法让它工作,所以我扫描整个表并向我返回所有产品,但我现在想要更具体的查询

我假设我想使用类似的东西:KeyConditionExpression但是当我这样做时我不断收到错误

编辑后的问题:

在此输入图像描述

代码:

componentDidMount() {
    console.log('mounted');
    const AWS = window.AWS;
    const params = {
      TableName: 'Products',
      FilterExpression: "category = trainers"
    };
...secret key code
ddb.scan(params, (err, data) => {
  if (err) {
    console.log(err, err.stack);
  } else {
    console.log(data);
    this.setState({ products: data })
  }
});
Run Code Online (Sandbox Code Playgroud)

F_S*_*O_K 2

尝试这个

 var params = {
  ExpressionAttributeValues: {
   ":catval": {
     S: "trainers"
    }
  }, 
  FilterExpression: "category = :catval", 
  TableName: "Products"
 };
 dynamodb.scan(params, function(err, data) {
  if (err) console.log(err, err.stack);
  else     console.log(data);
Run Code Online (Sandbox Code Playgroud)

编辑:您不能在表达式中使用文字。您定义一个 ExpressionAttributeValue,我将您的称为“:catval”,但您可以将其称为任何您喜欢的名称。“S”表示字符串,因此基本上您可以定义一个具有 String 类型和值“trainers”的 ExpressionAttributeValue。然后,当您应用 FilterExpression 时,您将放入 ExpressionAttributeValue,而不是文字。