Node.js Can';t查询DynamoDB,以\u开头,用于项目列表

Node.js Can';t查询DynamoDB,以\u开头,用于项目列表,node.js,amazon-web-services,amazon-dynamodb,Node.js,Amazon Web Services,Amazon Dynamodb,我已经尝试从DynamoDB查询数据两天了。让我发疯 我在办公室里有一张桌子。假设有两个办公室,科克和都柏林。我有一个名为“deskName”的列,它的名称类似于“cork1”、“cork2”、“dub1”、“dub2”。我希望能够查询表中包含“cork”或“dub”的项目,因为它们在同一个表中,但我不希望扫描整个表 代码: 亚马尔: 错误: ValidationException: Query key condition not supported 当我有条件='cork-1'时,我设法

我已经尝试从DynamoDB查询数据两天了。让我发疯

我在办公室里有一张桌子。假设有两个办公室,科克和都柏林。我有一个名为“deskName”的列,它的名称类似于“cork1”、“cork2”、“dub1”、“dub2”。我希望能够查询表中包含“cork”或“dub”的项目,因为它们在同一个表中,但我不希望扫描整个表

代码:

亚马尔:

错误:

ValidationException: Query key condition not supported
当我有条件='cork-1'时,我设法让一件物品回来。我想买每一件以“软木塞”开头的东西

谢谢你

你得到了这个

Syntax error in module 'api/desks/get': SyntaxError
    KeyConditionExpression: "#deskName = :deskName",
    ^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected identifier
因为这个

const params = {
  TableName: process.env.DYNAMODB_DESKS_TABLE,
  IndexName: 'deskName'
  KeyConditionExpression: "#deskName = :deskName",
  ExpressionAttributeNames:{
    "#deskName": "deskName"
  },
  ExpressionAttributeValues: {
    ":deskName": "cork"
  }
}
JavaScript对象需要在每个属性后面加一个逗号。
IndexName:'deskName'
之后缺少一个


我建议使用,因为它可以轻松地将Javascript数据类型映射到DynamoDB数据类型。

以下是我可以收集到的信息:

  • IndexName行末尾缺少逗号:
  • 常量参数={

    TableName: process.env.DYNAMODB_DESKS_TABLE,
    
    IndexName: 'deskName',
    
  • 对于ExpressionAttributeValue,需要定义数据类型,即:

  • 什么是错误或问题?完全忘记添加它了。很抱歉,我现在将它添加到问题中。@MarkB现在在那里添加了错误,谢谢!是不是
    deskName
    您没有在yaml文件中显示的二级索引的名称?如果不确切知道您的表数据是什么样子,我真的无法确定如何修复它。它是在尝试使用DynamoDB之前,您确实需要对其进行更多的阅读。我尝试添加了这一点,但不幸的是,它没有起作用:(
    const params = {
      TableName: process.env.DYNAMODB_DESKS_TABLE,
      IndexName: 'deskName'
      KeyConditionExpression: "#deskName = :deskName",
      ExpressionAttributeNames:{
        "#deskName": "deskName"
      },
      ExpressionAttributeValues: {
        ":deskName": "cork"
      }
    }
    
    TableName: process.env.DYNAMODB_DESKS_TABLE,
    
    IndexName: 'deskName',
    
    ExpressionAttributeValues: {
      ":deskName": { "S": "cork" }
    }