【问题标题】:What's wrong this this DynamoDb query "Query condition missed key schema element"这个 DynamoDb 查询“查询条件缺少关键架构元素”有什么问题
【发布时间】:2021-02-06 14:42:12
【问题描述】:

我希望这真的很简单,因为我是 DynamoDb 和 nodeJs 的新手。

我有一个有 idsiteId 的表。

这些用于创建名为 IdxSiteId 的全局二级索引。

我需要能够使用 siteId 获取其他项目的一些值(屏幕截图中未显示)。阅读内容最好的选择是使用 Query 而不是 GetItemBatch 或 Scan。经过反复试验才走到了这一步。

const getWarnings = async (siteId) => {
    const params = {
        TableName: process.env.WARNINGS_TABLE_NAME,
        IndexName: 'IdxSiteId',
        KeyConditionExpression: 'SiteId = :var_siteId',
        ExpressionAttributeValues: {
            ':var_siteId': siteId
        },
        ProjectionExpression: 'id, endTime, startTime, warningSubType',
        ScanIndexForward: false
    };
    return new DynamoDB.DocumentClient().query(params).promise();
};

虽然这是最接近它的工作,但我收到以下错误Error retrieving current warnings ValidationException: Query condition missed key schema element: siteId 并查看在线示例,我不知道此时我做错了什么。

正如我所说,我确信这非常简单,但我真的可以用指针来做。

【问题讨论】:

    标签: database aws-lambda amazon-dynamodb aws-sdk aws-sdk-nodejs


    【解决方案1】:

    字段名称区分大小写。您的 GSI 分区键是 siteId。您的查询是SiteId = :var_siteId。应该是siteId = :var_siteId

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 2018-05-20
      • 2019-02-27
      • 1970-01-01
      相关资源
      最近更新 更多