Предоставленный ключевой элемент не соответствует схеме - AWS - PullRequest
0 голосов
/ 25 марта 2019

Я видел аналогичный вопрос, размещенный на stackoverflow, но ответы не смогли сработать, чтобы решить мою проблему

Я создал ресурс в своем API GETWAY типа GET. В моих строках запроса я передаю следующее:

email=x@gmail.com

или

racf=XXXX&email=x@gmail.com

Я получаю эту ошибку:

Предоставленный ключевой элемент не соответствует схеме

Но если я делаю это с первичным ключом, он работает.

racf=XXXX

Я создал индекс в DynamoDB для атрибута электронной почты

ФУНКЦИЯ ЛАМБДА:

case 'GET':
    if (event.queryStringParameters) {
      dynamo.getItem({ 
          TableName: "eventregistration-db",
          Key:{
            //"racf": event.queryStringParameters.racf,
            "email": event.queryStringParameters.email
          }
       },done);
   } else {
     dynamo.scan({ TableName: tableName }, done);  
  }               
 break;

1 Ответ

2 голосов
/ 25 марта 2019

Похоже, email не является частью вашего Первичного ключа таблицы DynamoDb.

Для getItem вы должны использовать столбцы таблицыпервичный ключ таблицы (ключ раздела и, возможно, ключ сортировки) состоит из.

scan ключ не требуется, потому что он выполняет полный поиск в таблице - именно поэтому он работает в этом случае.

Установите emailracf) в качестве первичного ключа таблицы, с которым она будет работать.

Если вы хотите использовать индекс , вы должны использоватьquery:

dynamo.query({
    TableName: tableName,
    IndexName: indexName,
    KeyConditionExpression: "email = :email",
    ExpressionAttributeValues: {
        ":email": event.queryStringParameters.email
    }
}, done);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...