amazon-dynamodb - DynamoDB - 为什么我不能在我的关键条件表达式中使用 "_"作为前缀?

标签 amazon-dynamodb aws-sdk

我正在使用 AWS DynamoDB DocumentClient 来查询我的 DynamoDB 表。在我的表中,我有一个名为“_id”的属性,它为每个条目保存一个唯一的 ID。当我尝试根据此 ID 查询记录时,我最终收到一条错误消息:“无效的 KeyConditionExpression:语法错误; token :\"_\",靠近:\"_id\""。进行此查询的代码如下。

    function findById(id) {

     //Build query
    var params = {};
    params.TableName = "recordDev";
    params.IndexName = "_id";
    params.KeyConditionExpression = '_id = :id';
    params.ExpressionAttributeValues = {
      ':id': id
    };

    return DynamoDB
        .query(params).promise()
        .then(function(records) {
          return records.Items[0];
        })
        .catch(function(error) {
          return Promise.reject(error);
        });
   };

在为 DynamoDB 构建查询参数时,我是否缺少关于使用“_”的内容?我曾尝试四处寻找类似的错误,但一直无法找到与我的场景类似的错误。

最佳答案

您可以尝试使用 ExpressionAttributeNames 参数吗?

var params = {};
params.TableName = "recordDev";
params.IndexName = "_id";
params.KeyConditionExpression = '#id = :id';
params.ExpressionAttributeValues = {
  ':id': id
};
params.ExpressionAttributeNames: {
        "#id":"_id"
};

关于amazon-dynamodb - DynamoDB - 为什么我不能在我的关键条件表达式中使用 "_"作为前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42198091/

相关文章:

spring-boot - 如何使用 Spring Data DynamoDB 在应用程序启动时自动创建 DynamoDB 表?

amazon-web-services - 为什么我的 DynamoDB 扫描速度如此之快,而且只有 1 个预配置的读取容量单位?

javascript - 如何使用nodejs更新dynamoDB中的项目?

javascript - Amazon DynamoDB 的排序、跳过和限制(跳过)查询

node.js - NodeJS API 通过 ID 获取。如何检测未找到的项目?

.net - 在文件传输到 AWS S3 时处理 AWS STS key 过期?

java - 通过 Java AWS SDK 检索 S3 对象

javascript - 通过 Cognito Identity Pool 验证的用户的 MQTT 连接

amazon-web-services - 带有动态(自定义)文本的 AWS 出站 api 调用和带有文本转语音的电话?

javascript - 如何安全地使用 aws-sdk javascript