私は新しいプロジェクトでDynamodbを使用しようとしています。私は非常に混乱していると言わなければなりません。AWS DynamoDbテーブルのクエリ
私は、それが一意である必要があるので、タイムスタンプとして設定しているIDというハッシュキーで新しいテーブルをセットアップしました。
だから私のテーブルは大丈夫である。このように見えるし始めラムダ
var tableName = "TrackerTable";
var datetime = new Date().getTime().toString();
var putData = {
"TableName": tableName,
"Item": {
"ID" : {
"N": datetime
},
"TrackIt": {
"S": event.trackit
},
"Latitude": {
"N": event.lat
},
"Longitude": {
"N": event.lon
},
"Time": {
"N": datetime
}
}
}
dynamoDB.putItem(putData, function(err, data) {
if (err) {
context.fail('ERROR: Dynamo failed: ' + err);
} else {
console.log('Dynamo Success: ' + JSON.stringify(data, null, ' '));
context.succeed('SUCCESS');
}
});
に従うように私はその後、私のデータを挿入しています。 私はtrackit列に基づいて私の結果を返すためにラムダを使用しようとしていますか?
私は以下のコードを持っています。
var tableName = "TrackerTable";
var datetime = new Date().getTime().toString();
var queryData = {
"TableName": tableName,
"ConsistentRead": true,
"KeyConditionExpression": "trackit = :val",
"ExpressionAttributeValues": {":val": {"S": "05LUGFr7494"}}
};
dynamoDB.query(queryData, function(err, data) {
if (err) {
context.fail('ERROR: Dynamo failed: ' + err);
}else{
console.log('Dynamo Success: ' + JSON.stringify(data, null, ' '));
context.done(null, data.Items);
}
});
このエラーが発生します。
{
"errorMessage": "ERROR: Dynamo failed: ValidationException: Query condition missed key schema element: ID"
}
どのように私は値が1つのみ値を返すので、ID値を追加できないすべてのtrackit値をクエリできますか?
非常に混乱しています。
はい。これにはスキャンが必要です。もう1つのオプションは、trackitにグローバルな2次インデックスを定義することです。 – Shibashis