如何使用 GSI 条件在 dynamodb 中保存项目?
How to save Item in dynamodb with GSI condition?
我有一个 dynamodb table,它有一个带范围键(电子邮件、hashedPassword)的全局二级索引。
如果电子邮件不重复,我想保存一个项目,
我使用了 attribute_not_exists
但它不起作用,我还使用了 :
ConditionExpression: "#email <> :email",
ExpressionAttributeNames: {"#email": "email"},
ExpressionAttributeValues: {":email": userInfo.email}
没有成功。
谁能帮帮我,
谢谢。
DynamoDB 的条件表达式仅适用于它正在处理的项目,而不是跨项目。
换句话说,条件表达式不会针对其他项目进行评估。
例如,如果您正在创建一个新项目,如果您使用主键(如果有分区 + 排序键)作为唯一约束,则只能强制执行电子邮件约束。
您有一些选择:
- 在插入之前执行读取。这不能保证电子邮件的唯一性,但应该可以捕获很多重复项。
- 使用电子邮件作为主键。
- 插入后执行一致性读取,回滚创建
HTH
我有一个 dynamodb table,它有一个带范围键(电子邮件、hashedPassword)的全局二级索引。
如果电子邮件不重复,我想保存一个项目,
我使用了 attribute_not_exists
但它不起作用,我还使用了 :
ConditionExpression: "#email <> :email",
ExpressionAttributeNames: {"#email": "email"},
ExpressionAttributeValues: {":email": userInfo.email}
没有成功。
谁能帮帮我,
谢谢。
DynamoDB 的条件表达式仅适用于它正在处理的项目,而不是跨项目。
换句话说,条件表达式不会针对其他项目进行评估。
例如,如果您正在创建一个新项目,如果您使用主键(如果有分区 + 排序键)作为唯一约束,则只能强制执行电子邮件约束。
您有一些选择:
- 在插入之前执行读取。这不能保证电子邮件的唯一性,但应该可以捕获很多重复项。
- 使用电子邮件作为主键。
- 插入后执行一致性读取,回滚创建
HTH