DynamoDB Exception - в поставляемом AttributeValue задано более одного типа данных - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь выполнить пакетную запись в DynamoDB, но это не удается.

TableName -  td_notes_learn
PK user_id - String
SK datetime - Number 

Моя попытка:

const AWS = require("aws-sdk");
AWS.config.update({ region: "us-east-1" });

const docClient = new AWS.DynamoDB.DocumentClient();

docClient.batchWrite(
  {
    RequestItems: {
      td_notes_learn: [
        {
          DeleteRequest: {
            Key: {
              user_id: "D",
              datetime: 5
            }
          },
          PutRequest: {
            Item: {
              user_id: "G",
              datetime: 5,
              content: "HELLO WORLD"
            }
          }
        }
      ]
    }
  },
  (err, data) => {
    if (err) {
      console.log("Error found" + err);
    } else {
      console.log(data);
    }
  }
);

Исключение:

Обнаружена ошибкаValidationException: предоставляется AttributeValue имеет более одного набора типов данных, должен содержать ровно один из поддерживаемых типов данных

Кроме того, в том же коде, если я выполняю запрос DeleterRequest и PutRequest индивидуально, комментируя другой , код работает нормально, ошибка возникает только тогда, когда я запускаю вместе. Пожалуйста, ведите меня.

1 Ответ

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

Похоже, что все запросы должны быть отдельным json объектом, и проблема в моем коде заключалась в том, что все запросы были в одном json объекте. Ниже приведен рабочий код.

docClient.batchWrite(
  {
    RequestItems: {
      td_notes_learn: [
        {
          DeleteRequest: {
            Key: {
              user_id: "D",
              datetime: 5
            }
          }
        }, // WAS MISSING
        {  // WAS MISSING
          PutRequest: {
            Item: {
              user_id: "G",
              datetime: 5,
              content: "HELLO WORLD"
            }
          }
        } // WAS MISSING
      ]
    }
  },
  (err, data) => {
    if (err) {
      console.log("Error found" + err);
    } else {
      console.log(data);
    }
  }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...