Как добавить значение в пустой атрибут списка в AWS DynamodB - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь добавить сообщение в пустой список в AWS DynamoDB.

Вот ошибка, которую я получаю, когда запускаю функцию

Invalid UpdateExpression: неверное количество операндов для оператора или функция; оператор или функция: list_append, количество операндов: 1

Структура данных в DynamodB

enter image description here

Ниже приведен код:

var caseId       = "1734009";
var chatMessage = { "2018-04-20T15:02:48Z":
                    {
                      "userId": "wQnUJrklzwWBDOsx83XVETSS7us2",
                      "message": "How are you"
                    }
                  }

var params = {
  TableName  : 'CHATS',
  Key: {
    "CASE_ID" : caseId
  },
  UpdateExpression : "SET CHAT_MESSAGES = list_append(:i)",
  ExpressionAttributeValues : {
      ':i': [chatMessage],
  },
  ReturnValues:'UPDATED_NEW' // OTHER OPTIONS: NONE | ALL_OLD | UPDATED_OLD | ALL_NEW | UPDATED_NEW
};


documentClient.update(params, function(err, data) {
  if(err) {

    var message  = "Chat message could not be saved, error:" + JSON.stringify(err, null, 2);
    res.json({"status": "failure", "statusCode" : 400, "message": message});

  } else {
    next();
  }
});

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Используя приведенные ниже параметры и ссылаясь на документы AWS, предоставленные Jason Livesay, я смог добавить элементы в пустой список.

var params = {
    TableName  : 'CHATS',
    Key: {
      "CASE_ID" : caseId
    },

    UpdateExpression : "SET #ri = list_append(#ri, :vals)",
    ExpressionAttributeNames: {
      "#ri": "CHAT_MESSAGES"
    },
    ExpressionAttributeValues : {
        ':vals': [chatMessage]
    },
    ReturnValues:'UPDATED_NEW' // OTHER OPTIONS: NONE | ALL_OLD | UPDATED_OLD | ALL_NEW | UPDATED_NEW
  };
0 голосов
/ 29 апреля 2018

list_append принимает два аргумента, а не один: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html

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