DynamoDB: запрос столбцов, отсутствующих в схеме

В моем DynamoDB есть следующая таблица

Thread (id, userId, content)

Идентификатор является первичным ключом. Я не определил никакого ключа сортировки.

Теперь мне нужно получить результат на основе userId .. короче мне нужны все записи в таблице, содержащие определенный 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

Может кто-нибудь дайте мне знать, как я могу запросить все записи, содержащие userId '123'?


person Hammad Khalid    schedule 10.12.2018    source источник


Ответы (1)


Для этого вам потребуется добавьте в таблицу глобальный вторичный индекс, в котором в качестве первичного ключа используется userId. Затем вы можете напрямую запросить этот индекс.

Вы также должны включить имя индекса в запрос запроса (источник).

person Matthew Pope    schedule 10.12.2018
comment
В предоставленном вами образце кода не указано имя индекса. Вы должны включить имя индекса, чтобы запросить индекс. См. docs.aws.amazon.com/amazondynamodb/latest / developerguide / - person Matthew Pope; 10.12.2018
comment
Не могли бы вы добавить вышеупомянутое в свой исходный ответ, чтобы я мог его принять ... Это работает, спасибо за помощь! - person Hammad Khalid; 10.12.2018