Я только начинаю использовать DynamoDB и настраиваю таблицу "учетных записей".
Я установил дополнительный индекс, чтобы я мог запросить пользователя и пользовательский ключ api. Ни одно из этих значений не является первичным ключом, так как они нестабильны и могут быть изменены.
Таблица построена с помощью
TableName: "Accounts",
KeySchema: [
{ AttributeName: "id", KeyType: "HASH" },
{ AttributeName: "email", KeyType: "RANGE" }
],
AttributeDefinitions: [
{ AttributeName: "id", AttributeType: "S" },
{ AttributeName: "email", AttributeType: "S" }
]
И индекс
TableName: 'Accounts',
AttributeDefinitions: [
{AttributeName: 'name', AttributeType: 'S'},
{AttributeName: 'apiKey', AttributeType: 'S'}
],
GlobalSecondaryIndexUpdates: [
{
Create: {
IndexName: "ApiAccounts",
ProvisionedThroughput: {
ReadCapacityUnits: 1, WriteCapacityUnits: 1
},
KeySchema: [
{AttributeName: 'name', KeyType: "HASH"},
{AttributeName: 'apiKey', KeyType: "STRING"}
],
Projection: {
ProjectionType: "KEYS_ONLY"
},
Теперь я пытаюсь получить учетную запись uses, запросив индекс ApiAccounts
.
Я пытаюсь
dynamoClient.get({
TableName: 'Accounts',
IndexName: 'ApiAccounts',
Key: {
name: nameKeyArray[0],
apiKey: nameKeyArray[1]
}, callback)
Но я получаю сообщение об ошибке One of the required keys was not given a value
, что заставляет меня поверить, что я не могу "получить" по индексу? Или я неправильно ссылаюсь на индекс. Может ли кто-нибудь уточнить для меня?
Имя и ключ API уникальны, поэтому я думаю, что хочу избежать запроса или сканирования, если возможно