2017-12-11 5 views
1

범위 키 (email, hashedPassword)가있는 글로벌 보조 인덱스가있는 dynamodb 테이블이 있습니다. 내가 이메일이 중복되지 않은 경우 항목을 저장하려면, 내가 attribute_not_exists를 사용하지만이 작동하지 않습니다, 나는 또한 사용 :GSI 조건으로 dynamodb에 아이템을 저장하는 방법은 무엇입니까?

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

성공하지.

아무도 도와 드릴 수 있습니까?

감사합니다.

+0

(있는 경우 해시 키와 정렬 키) 기본 키는 무엇입니까? – Stu

+0

@Stu hashKey는 "Id"입니다. – Smartoop

답변

1

DynamoDB의 조건 표현식은 작업중인 항목에서만 작동하며 항목 간에는 작동하지 않습니다.

즉 조건 표현식이 다른 항목에 대해 평가되지 않습니다.

예를 들어 새 항목을 만드는 경우 기본 키 (Partition + Sort Key)를 고유 제한 조건으로 사용하면 전자 메일 제약 조건을 적용 할 수 있습니다.

일부 옵션은, 당신은 :

  • 가 삽입하기 전에 읽기를 수행합니다. 이것은 전자 메일의 고유성을 보장하지는 않지만 많은 중복을 포착해야합니다.
  • 전자 메일을 기본 키로 사용하십시오.
  • 는 창조

HTH를 롤백하는, 삽입 후 일관된 읽기를 수행

+0

첫 번째 옵션을 사용했지만 이메일의 고유성을 보장하지는 않지만 많은 중복을 포착해야합니다. " 어떻게 가능할까요? – Smartoop

+1

동일한 전자 메일 주소에 대한 두 개의 삽입이 동시에 발생하는 경우 두 전자 메일에 모두 일치하는 전자 메일이 없으며 두 전자 메일이 모두 삽입됩니다. –