如何获得具有二级索引的某个项目

how to get a certain item with secondary index

我需要一些帮助;我正在尝试从 dynamodb table 中获取某个项目,方法是使用特定 ID(主键)e 调用它,并使用名为 index_book.

的全局二级索引

感兴趣的函数如下:

case "GET /book/{id}":
        body = await dynamo
          .get({
            TableName: "book",
            Key: {
              id: event.pathParameters.id
            }
          })
          .promise();
        break;

我去调用具有特定 ID 的 url 的那一刻,例如 /book/7(其中 7 是 ID) 我收到以下错误:

“提供的关键元素与模式不匹配”​​

你能帮帮我吗?我会非常感谢你。

您不能针对 GSI 执行获取项目,您必须执行查询。这是因为在 GSI 中没有唯一性约束,并且多个项目可能具有相同的分区键/排序键组合。

因此将 get 切换为查询,您还需要指定 IndexName。