amazon-dynamodb - DynamoDB/Dynalite 查询未使用 NodeJS 返回查询

标签 amazon-dynamodb

我正在尝试学习 AWS DynamoDB,但遇到了一个看似简单却无法解决的问题。

我正在使用Dynalite本地运行在nodejs上。 错误如下;

{ [ValidationException:必须在请求中指定 KeyConditions 或 KeyConditionExpression 参数。] message: '必须在请求中指定 KeyConditions 或 KeyConditionExpression 参数。', 代码:'验证异常', 时间: 2015年12月21日星期一 17:31:47 GMT+0200 (SAST), requestId: 'RHDFVDXQTI0VZUIRJSLGRZXJFQJQYWGJOGS0B4MUDSX3H3JSVWNR', 状态代码:400, 可重试:假, 重试延迟:0 }

我的表创建如下(为简洁起见,删除了代码);

var params = {
    TableName : "test",
    KeySchema: [       
      { AttributeName: "email", KeyType: "HASH" },  
      { AttributeName: "date", KeyType: "RANGE" }
    ],
    AttributeDefinitions: [       
        { AttributeName: "email", AttributeType: "S" },
        { AttributeName: "date", AttributeType: "N" }
    ],
    ProvisionedThroughput: {       
        ReadCapacityUnits: 1, 
        WriteCapacityUnits: 1
    }
}

dynamodb.createTable(params, function(err, data) {
    if (err) { console.log(JSON.stringify(err, null, 2)) }
    } else   { console.log(JSON.stringify(data, null, 2)) }
})

测试数据加载如下;

var params = { 
    TableName: 'test',
        Item: {
            "email":   lowerCasedEmail,
            "date":    date,                                                
            "amount":  amount,
        }
    }

  dynamodbDoc.put(params, function(err, data) {
     if (err){
       console.log(JSON.stringify(err, null, 2))
     } else {
        console.log(JSON.stringify(data, null, 2))
     }
  })

然后失败的查询如下;

var params = {
    TableName: "test",    
    KeyConditionExpression: "email = :testmail",
    ExpressionAttributeValues: {
      ":testmail": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3a4853517a4e5f494e14595557" rel="noreferrer noopener nofollow">[email protected]</a>"
    }
}

dynamodbDoc.query(params, function(err, data) {
   if (err) { console.log(err) } 
   else {
      if (Object.keys(data).length === 0) {
             console.log('Nothing found.')
      } else { console.log(data) }
   }
 })

最佳答案

我发现了问题。 Dynalite 无法正确处理 KeyConditionExpression。

关于amazon-dynamodb - DynamoDB/Dynalite 查询未使用 NodeJS 返回查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34399678/

相关文章:

amazon-web-services - 时间序列数据的 dynamodb 与 aws s3

aws-lambda - 用于 DynamoDB 索引查询的 ARN 不起作用

javascript - 如何更新嵌套在 map 中的 DDB 中的字符串集

java - 如何使用适用于 Java 的 AWS 开发工具包在 Amazon DynamoDB 中使用分页

amazon-dynamodb - AWS AppSync GraphQL 按字段值查询记录

python - 尝试使用 python boto 库插入 float 时出现 DynamoDBNumberError

amazon-dynamodb - 如何计算 DynamoDB 的读取容量单位和写入容量单位

node.js - 是否可以仅通过分区键批量获取多个项目 DynamoDB

json - 使用 AWS Rekognition 检测 PPE 并将结果存储在 DynamoDB 中

node.js - 仅使用插入配置 DynamoDB 流触发器