DynamoDB переопределяет существующую пару ключ-значение из-за AttributeValues - PullRequest
0 голосов
/ 27 мая 2019

----------------- ДАЙТЕ БОЛЬШЕ БЕТОННЫХ ПРИМЕРОВ НИЖЕ -----------------

У меня естьследующая функция, где я беру пользователя, имя, пол из параметров и обновляю существующего клиента для этого пользователя.

function createRecord(user, personName, sex) {
  var sexPayload = [];
  var dynamoParams = {
    TableName: 'account',
    Key: {
      id: user
    },
    UpdateExpression: "set #client.#person.#sex = :sexPayload",
    ExpressionAttributeNames: {
      "#client": "client",
      "#person": personName,
      "#sex": sex
    },
    ExpressionAttributeValues: {
        ":sexPayload": sexPayload,
    },
    ConditionalExpression: "attribute_not_exists(#client.#person.#sex)"
  };
  docClient.update(dynamoParams, function(err, data){
    something...
  });
}

если personName = "John" sex = "man", это создает

client: {
    John: {"M": {"man": {"L": []}}},
}

и когда я передаю другое имя = "Джон", пол = "женщина", это переопределяет существующего Джона "мужчина" и пишет "женщина" под Джоном

client: {
    John: {"M": {"female": {"L": []}}},
}

Чего я хочу достичьэто:

client: {
    John: {"M": {"man": {"L": []}, {"female": {"L": []}},
}

что я делаю не так ??

...