Dynamodb putItem написано дважды - PullRequest
       7

Dynamodb putItem написано дважды

0 голосов
/ 21 сентября 2019

Я новичок в AWS и чувствую, что упускаю что-то важное.

Я использую этот код из лямбда-функции в nodeJS для создания записи в таблице DynamoDB:

function recordUser(item) {
    return ddb.putItem({
        TableName: 'Users',
        Item: item,
        Expected: {
            username: { Exists: false }
        }
    }).promise();
}

Я думаю, что условие будет препятствовать появлению дубликатов, но я все еще вижу некоторые дубликатызаписи с тем же именем пользователя, что я пропускаю?

1 Ответ

0 голосов
/ 23 сентября 2019

Вы даете "Ожидаемый" неверное толкование ... Вы, похоже, надеетесь, что он проверяет, существует ли какой-либо существующий элемент в базе данных с заданным значением атрибута "username".Но это не то, что делает ожидаемый ... Он делает что-то совсем другое: он читает один конкретный элемент - элемент с тем же ключом, который вы указали в «Элементе», а затем проверяет, есть ли этот конкретный элемент , для его атрибута "username" существует значение (любое значение!).

Чтобы предложить, как исправить ваш вариант использования, нам нужно больше узнать о ваших данных.Самым простым решением, конечно же, является наличие таблицы, единственным ключом которой является «имя пользователя», что позволит использовать только один элемент для каждого имени пользователя.Но я не знаю, достаточно ли это для вашего случая использования.

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