Как запросить одну запись с помощью AWS DynamoDB?Примеры кода не работают - PullRequest
0 голосов
/ 13 октября 2018

Я взял пример кода по самым основам, и я до сих пор не могу получить одну запись по ключу.Вот мой базовый пример с nodejs (кредиты, не включенные в этот фрагмент):

var dynamodbClient = new AWS.DynamoDB.DocumentClient();

var params = {
    TableName: 'newsarticles',
    Key: { id: '068d1110-cd0c-11e8-a4d4-57cb772554a4' }
};

//log full dynamodb request object
console.log("request params: ", JSON.stringify(params));

//make dynamodb request
dynamodbClient.get(params, function(err, data) {
    if (err) {
        console.log("error: " + err)
    } else {
        console.log(data.Item);
    }
});

выполнение этого кода выше приведёт к следующей ошибке:

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

мой набор данных легко вставляется, и записи в системе выглядят следующим образом:

{
  "added": 1539231216801,
  "description": "A number of ethics complaints filed against Supreme Court Justice Brett Kavanaugh have yet to be resolved and will be transferred to a new jurisdiction, Chief Justice John Roberts wrote in a letter Wednesday. ",
  "edited": 1539231216402,
  "id": "068d1110-cd0c-11e8-a4d4-57cb772554a4",
  "largeImageUrl": "https://fm.cnbc.com/applications/cnbc.com/resources/img/editorial/2018/10/09/105496148-1539094642099gettyimages-1047769784.1910x1000.jpeg",
  "newstitle": "Ethics complaints against Brett Kavanaugh have not been resolved yet",
  "newsurl": "https://www.cnbc.com/2018/10/10/ethics-complaints-against-brett-kavanaugh-have-not-been-resolved-yet.html",
  "posted": 1539231216402,
  "scrapeid": "05c3a690-cd0c-11e8-a4d4-57cb772554a4",
  "scrapes": [
    "05c3a690-cd0c-11e8-a4d4-57cb772554a4"
  ],
  "source": "www.cnbc.com",
  "type": "rate"
}

Таблица определена следующим образом:

Имя таблицы: newsarticles

Основной ключ раздела: id (String)

Основной ключ сортировки: добавлено (Number)

Сообщение об ошибке на самом деле не говорит мне, в чем проблема.Может ли кто-нибудь увидеть, что не так в моем запросе?Есть ли другой способ диагностики того, что может отсутствовать или быть неправильным?Заранее спасибо, извините за вопрос NOOB, но я только начинаю с AWS DynamoDB в первый раз.

1 Ответ

0 голосов
/ 13 октября 2018

Вы не включаете полный первичный ключ, вам также необходимо указать ключ сортировки, added в этом случае

var params = {
    TableName: 'newsarticles',
    Key: {
      id: '068d1110-cd0c-11e8-a4d4-57cb772554a4',
      added: aNumberHere
    }
};

Альтернативно, если вы пытаетесь получить всю запись с определенным идентификаторомвам нужно использовать запрос.

...