Мне нужно получить идентификатор пользователя из моей таблицы пользователей в DynamoDB? - PullRequest
0 голосов
/ 20 марта 2020

Я использую AWS Усиление в моем собственном приложении реакции

Я хочу сделать что-то, казалось бы, такое простое, но я немного растерялся, как это сделать: у меня есть таблица с пользователем информация уже в нем. Вот схема:

type Users @model {
  id: ID!
  userName: String
  firstname: String
  weblink: String
  email: String
  mobileNum: String
 .
 .
 .
}


//Here's my Query.js
export const getUsers = `query GetUsers($id: ID!) {
  getUsers(id: $id) {
    id
    userName
    firstname
    weblink
    email
    .
    .
    .
  }
}
`;

Эта таблица заполняется в DynamoDB, когда я проверяю консоль AWS. Что мне нужно, чтобы иметь возможность получить идентификатор из таблицы, используя имя пользователя (а не наоборот). Идентификатор генерируется при создании createUser () и используется в моем приложении для получения всей информации моего пользователя. Однако когда пользователь входит в новый телефон, этот идентификатор больше не доступен. Поэтому, когда они входят через Cognito, я знаю имя пользователя и все, что мне нужно сделать, это получить этот идентификатор.

Обычно я делаю это, но, очевидно, я хочу сделать обратное и использовать свое уникальное имя пользователя для получения идентификатора:

const userData = await API.graphql(graphqlOperation(GetUsers, { id: usersId }));   //usersId = "3b0dae-24j5-4401-95a6-11seyhaf1g131"

Любая идея, как я могу получить идентификатор моих пользователей?

1 Ответ

0 голосов
/ 20 марта 2020

Предполагая, что userName уникален, создайте Глобальный вторичный индекс с userName в качестве ключа раздела. Проект , как минимум, атрибут id в индексе. Наконец, ищите этот индекс вместо базовой таблицы.

В качестве альтернативы, если вам никогда не нужно искать по id, рассмотрите возможность сделать userName ключом раздела и id обычным атрибут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...