DynamoDB:查询模式中不存在的列

DynamoDB: Query on columns not present in the Schema

我的 DynamoDB

中有以下 table
Thread (id, userId, content)

id为主键。我还没有定义任何排序键。

现在我需要根据 userId 检索结果。简而言之,我需要 table 中包含特定 userId

的所有记录
userId = '123';
let queryParams = {
  TableName: tableName,
  ExpressionAttributeNames: {
      '#userid': 'userid'
  },
  ExpressionAttributeValues: {
      ':userid': userId
  },
  KeyConditionExpression: "#userid = :userid" 
} 
dynamodb.query(queryParams, (err, data) => {
  console.log(err);
  console.log(data);
});

当我 运行 执行此操作时,出现错误

Could not load items: ValidationException: Query condition missed key schema element: id

有人可以告诉我如何查询包含用户 ID“123”的所有记录吗?

为此,您需要 add a Global Secondary Index 到以 userId 作为主键的 table。然后您可以直接查询该索引。

您还必须在查询请求中包含索引名称 (source)。