2017-11-19 19 views
0

私はAWS ConsoleとNodeJSを使用しています。dynamodbでGSIを使用するには?

私は、パーティションキー(user_id)とソートキー(company_id)と他の属性を持つユーザーのdynamodbテーブルを持っています。

私の属性の1つは、ユーザーのメールです。電子メールは一意の属性です。

私は電子メールでuser_idを取得する必要がありますが、user_idとcompany_idは持っていません。

私はグローバルセカンダリインデックスを使うべきだと思います。

私はusersテーブルをクリックし、Indexesタブを開き、このテーブルの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 = { 
    "TableName": "users", 
    "IndexName": "email", 
    "KeyConditionExpression": "#index = :index_value", 
    "ExpressionAttributeNames":{ 
     "#index": "email" 
    }, 
    "ExpressionAttributeValues": { 
     ":index_value": "[email protected]" // <---------------- 
    }, 
    "ProjectionExpression": "user_id", 
     "ScanIndexForward": false 
    }; 
} 

のように見えますが、それは誰か

にお役に立てば幸い必要があります
関連する問題