具有 begins_with ConditionalExpression 的 DynamoDB

DynamoDB with begins_with ConditionalExpression

给定以下代码,我想防止给定 table 的排序键没有 begins_with 'account_' 的排序键的重复:

 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
--------------------------------------

如上所述,如果已经存在 PK,或者更具体地说,如果 PK 和 SK 不以 'account_' 开头,我需要防止重复。无论我尝试什么,我总是得到重复的 PK 记录。

如果您的用例是只有一个帐户,您应该只选择 account 而不是 account_{someNumber}

对于您正在使用的结构,如果在执行 put 之前检查是否存在具有 account_* 的实体,然后执行 put 调用。但这也不足以满足给定的条件。(可以有两个人同时进行看跌期权)