DynamoDB с начинается с условным выражением - PullRequest
1 голос
/ 12 марта 2019

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

 db.put({
            TableName: process.env.TABLE_NAME,
            ConditionExpression: "NOT begins_with(SK,account_)",
            Item: account
        },function(err,data) {
            if(err) {
                callback(err,null);
            } else {
                callback(null,done(err,data));
            }
        }); 


Here's the table format
--------------------------------------
PK               | SK            | Attributes
user1@domain.com | account_123094| ...
user1@domain.com | account_239123| ... <-- ConditionalExpression should prevent
user2@domain.net | account_993422| ... <-- ConditionalExpression should allow
--------------------------------------

Как видно выше,Мне нужно предотвратить дубликаты, если ПК уже существует или, более конкретно, если ПК и SK не начинаются с «account_».Независимо от того, что я пытаюсь, я продолжаю получать дубликаты записей PK.

1 Ответ

0 голосов
/ 13 марта 2019

Если в вашем случае использования должна быть только одна учетная запись, вы должны указать только account вместо account_{someNumber}.

С используемой структурой, если перед выполнением пута вы проверяете, существует ли какая-либо сущность с account_ *, и после этого делаете пут-вызов. Но этого также будет недостаточно для выполнения заданного условия (может быть два парня, одновременно выполняющих пут-колл)

...