查询可以在控制台上运行,但不能在代码中运行

Old*_*zer 5 amazon-dynamodb dynamodb-queries

我的 DynamoDB 表alexas包含带有键“abc”的此项,如下面的 DynamoDB 控制台所示:

在此输入图像描述

但是,以下查询不返回结果:

const params = { TableName: "alexas",
  KeyConditionExpression: "deviceId = :deviceId",
  ExpressionAttributeValues: { ":deviceId": "abc"}
}
const docClient = new AWS.DynamoDB.DocumentClient();
docClient.query(params, (err, data) => {
  if (err) {
    console.error(err);
  } else {
    console.log(data);
  }
});
Run Code Online (Sandbox Code Playgroud)

上面的代码返回nullforerr和 in data

{ Items: [], Count: 0, ScannedCount: 0 }
Run Code Online (Sandbox Code Playgroud)

我对 DynamoDB 表达式风格不熟悉。我从这里获取的代码有什么问题吗?

query如果我不使用 ,而是使用该scan方法,只需使用TableNamein params,我就会得到表中的项目。这证实我正在对包含数据的正确表执行操作。

Old*_*zer 4

由于键值不匹配,查询未返回任何数据。

该项目deviceId是字符串"abc"而不是abc。请注意额外的引号。

""该项目是使用 DynamoDB 控制台的创建编辑器插入的,如果该值已预期为字符串类型,则无需包含该项目。