So holen/scannen Sie alle Elemente AWS dynamodb
mit node.js
. Ich poste meinen Code hier.
var docClient = new aws.DynamoDB.DocumentClient();
var params = {
TableName:"users",
KeyConditionExpression:"user_status=:status",
ExpressionAttributeValues: {
":status": "Y"
}
};
var queryExecute = function(callback) {
docClient.query(params,function(err,result) {
if(err) {
console.log(err)
callback(err);
} else {
console.log(result);
if(result.LastEvaluatedKey) {
params.ExclusiveStartKey = result.LastEvaluatedKey;
queryExecute(callback);
} else {
callback(err,items);
}
}
});
}
queryExecute(callback);
Dies gibt mir den folgenden Fehler.
ValidationException: Query condition missed key schema element: `user_id`.
Hier ist der Primärschlüssel user_id. Ich möchte es nicht mit meiner Abfragebedingung verwenden, da ich einen Wert festlegen muss, wenn ich den Primärschlüssel in erwähnt habe KeyConditionExpression
. Vielleicht liege ich falsch. Schlagen Sie mir jedoch bitte eine gute Möglichkeit vor, alle Artikel von zu holen dynamodb
, die habenuser_status = "Y"
Lösung des Problems
Das funktioniert bei mir:
export const scanTable = async (tableName) => {
const params = {
TableName: tableName,
};
const scanResults = [];
const items;
do{
items = await documentClient.scan(params).promise();
items.Items.forEach((item) => scanResults.push(item));
params.ExclusiveStartKey = items.LastEvaluatedKey;
}while(typeof items.LastEvaluatedKey!== "undefined");
return scanResults;
};
Keine Kommentare:
Kommentar veröffentlichen