DynamoDB - получить элемент по глобальному вторичному индексу

У меня есть таблица с 10 полями. Поля такие:

AuthID, UserID, возраст, должность и т. Д.

В таблице хранятся данные моих пользователей. AuthID - это первичный ключ, а UserID - это глобальный вторичный индекс.

Когда я получаю товар по AuthID, все нормально. Но я не могу получить товар по UserID. Я пробовал методы GetItem, Query и Scan, но все три метода мне не удалось.

Мне нужно получить данные с помощью этих трех методов, которые я написал ниже:

1 - Get user data by AuthID (It's already works fine)
2 - Get user data by UserID
3 - Get user data by AuthID and UserID both

AuthID и UserID уникальны. Может ли кто-нибудь указать мне, что делать?


person Yusuf Demir    schedule 06.11.2020    source источник
comment
Можете ли вы обновить вопрос с помощью кода, который вы используете для получения данных?   -  person Seth Geoghegan    schedule 06.11.2020


Ответы (1)


Я много искал в документации и обнаружил, что если вам нужно получить один элемент, даже тогда вы не можете использовать метод get или getItem при использовании глобального вторичного индекса. Можно использовать метод запроса. пример метода запроса с глобальным вторичным индексом

let params = {
  TableName: "Users",
  IndexName: "your-index",
  ExpressionAttributeValues: {
    ":v1": "myid"
  }, 
  KeyConditionExpression: "my_partition_key_in_gsi = :v1", 
};
 dynamodb.query(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response
 });
person Shikhar Shukla    schedule 08.04.2021