我有一个dynamodb表,它有一个带范围键(email,hashedPassword)的全局二级索引。我想保存一个项目,如果电子邮件没有重复,我使用了attribute_not_exists
,但它不工作,我还使用:
ConditionExpression: "#email <> :email",
ExpressionAttributeNames: {"#email": "email"},
ExpressionAttributeValues: {":email": userInfo.email}
没有成功。
有人能帮帮我吗,
谢谢大家。
2条答案
按热度按时间qco9c6ql1#
DynamoDB的条件表达式仅适用于它正在处理的项,而不是跨项。
换句话说,条件表达式不会针对其他项进行计算。
例如,如果要创建新项目,则只有在使用主键(分区+排序键,如果有的话)作为唯一约束时,才能强制电子邮件约束。
您可以选择:
高温加热
gab6jxml2#
如果有人有同样的问题,这里是我的方法:
1.在插入之前对
gsi
执行读取1.使用ClientRequestToken执行TransactWriteItems(使用
gsi
的数据),防止短时间内多次请求参见此参考。