2017-11-19 1 views
0

AWS Console과 NodeJS를 사용하고 있습니다.dynamodb에서 GSI를 사용하는 방법?

파티션 키 (user_id)와 정렬 키 (company_id) 및 기타 속성을 가진 사용자의 dynamodb 테이블이 있습니다.

내 속성 중 하나는 사용자의 이메일입니다. 이메일은 고유 한 속성입니다.

전자 메일로 user_id를 가져올 필요가 있지만 user_id 및 company_id가 없습니다.

글로벌 보조 색인을 사용해야한다고 생각합니다.

사용자 테이블을 클릭하고 색인 탭을 열고이 테이블에 대한 GSI를 만들었습니다. (이름 : 전자 메일, 유형 : GSI, 파티션 키 : 전자 메일 문자열, 특성 : user_id)

documentClient에서 Query 메서드를 사용하고 있습니다.

"ERRORMESSAGE":

payload = { 
    "TableName": "users", 
    "IndexName": "email", 
    "KeyConditionExpression": "#index = :index_value", 
    "ExpressionAttributeNames":{ 
     "#index": "email" 
    }, 
    "ExpressionAttributeValues": { 
     ":index_value": {"S": "[email protected]"} 
    }, 
    "ProjectionExpression": "user_id", 
     "ScanIndexForward": false 
    }; 
} 

이 CloudWatch에서에서 내 오류가 있습니다 : 이것은 내 페이로드 "하나 개 이상의 매개 변수 값이 잘못되었습니다 : 조건 매개 변수 유형은 스키마 유형과 일치하지 않습니다"

답변

0

이 질문을 쓰는 동안 해결책을 찾았습니다. 내가 사용 그래서으로 documentClient 내 페이로드 (payload)이

payload = { 
    "TableName": "users", 
    "IndexName": "email", 
    "KeyConditionExpression": "#index = :index_value", 
    "ExpressionAttributeNames":{ 
     "#index": "email" 
    }, 
    "ExpressionAttributeValues": { 
     ":index_value": "[email protected]" // <---------------- 
    }, 
    "ProjectionExpression": "user_id", 
     "ScanIndexForward": false 
    }; 
} 

처럼 보이는 누군가

에 도움이되기를 바랍니다한다
관련 문제