如何使用GSI条件在dynamodb中保存项目?

时间:2017-12-11 20:30:13

标签: javascript node.js amazon-dynamodb dynogels

我有一个dynamodb表,其中包含一个带有范围键的全局二级索引(email,hashedPassword)。 如果电子邮件不重复,我想保存一个项目, 我使用attribute_not_exists,但它不起作用,我也用过:

ConditionExpression: "#email <> :email",
ExpressionAttributeNames: {"#email": "email"},
ExpressionAttributeValues: {":email": userInfo.email}

没有成功。

任何人都可以帮助我,

谢谢。

1 个答案:

答案 0 :(得分:2)

DynamoDB的条件表达式仅适用于它正在使用的项目,而不适用于项目。

换句话说,不会针对其他项目评估条件表达式。

例如,如果您要创建新项目,则只有在使用主键(如果有的话,使用分区+排序键)作为唯一约束时,您才能强制执行电子邮件约束。

您有一些选择:

  • 在插入之前执行读取。这不能保证电子邮件的唯一性,但应该抓住很多重复的内容。
  • 使用电子邮件作为主键。
  • 插入后执行一致读取,回滚创建

HTH