代码之家  ›  专栏  ›  技术社区  ›  Jimi

筛选dynamo db表会产生无效的keyconditionexpression gsi

  •  0
  • Jimi  · 技术社区  · 7 年前

    我有一个包含id和名称的表,有一个带有分区键的gsi索引 名字 以及排序列 上次参加 是的。我试图使用lambda查询它,但无法返回任何结果。我总是在格式上出错。我将documentclient与query方法结合使用,每次运行时它都会给我一个不同的错误。 不知道我错过了什么,谢谢你的帮助…

    啊!--数据

    {
      "id": 20919382411,
      "Belt_awarded": "green",
    },
    {
      "id": 20919382412,
      "Belt_awarded": "yellow",
    }
    

    啊!---代码

     const docClient = new AWS.DynamoDB.DocumentClient()
    
       const params = {
          TableName : `students`,
          "IndexName": "theName-Last_attended-index",
          KeyConditionExpression: '#id = :id_val',
          ExpressionAttributeValues: { ":id_val": {"N": "20919382411"}, ':v_name': { 'S': 'joe' } }
        }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Jimi    7 年前

    你的在哪 ExpressionAttributeNames 是吗?

    你定义了 #id 作为表达式属性,但不声明任何 表达式属性名称

    您正在使用文档客户端。应该是这样的

    const params = {
        TableName: 'students',
        IndexName: 'Belt_awarded-index',
        KeyConditionExpression: '#Belt_awarded = :Belt_awarded',
        ExpressionAttributeNames: {
            '#Belt_awarded': 'Belt_awarded'
        },
        ExpressionAttributeValues: {
            ':Belt_awarded': 'yellow'
        },
    };