Cómo obtener / escanear todos los elementos de `AWS dynamodb` usando node.js

Cómo obtener / escanear todos los elementos de AWS dynamodb usando node.js Estoy publicando mi código aquí.

 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); 

Esto me está dando debajo de error.

 ValidationException: Query condition missed key schema element: `user_id`. 

Aquí la clave principal es user_id. No quiero usarlo con mi condición de consulta, porque necesito establecer un valor si mencioné la clave principal en KeyConditionExpression . Tal vez yo estoy equivocado. Sin embargo, dynamodb una buena manera de obtener todos los elementos de dynamodb , que tiene user_status = "Y"

Si desea obtener los datos de DynamoDB sin usar el valor de clave Hash, debe usar la Scan API .

Nota: la API de exploración lee todos los elementos de la tabla para obtener los resultados. Por lo tanto, es una operación costosa en DynamoDB.

Enfoque alternativo: utilizar GSI

Escanear código para el sceanario anterior: –

 var docClient = new AWS.DynamoDB.DocumentClient(); var params = { TableName: "users", FilterExpression: "#user_status = :user_status_val", ExpressionAttributeNames: { "#user_status": "user_status", }, ExpressionAttributeValues: { ":user_status_val": 'somestatus' } }; docClient.scan(params, onScan); var count = 0; function onScan(err, data) { if (err) { console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2)); } else { console.log("Scan succeeded."); data.Items.forEach(function(itemdata) { console.log("Item :", ++count,JSON.stringify(itemdata)); }); // continue scanning if we have more items if (typeof data.LastEvaluatedKey != "undefined") { console.log("Scanning for more..."); params.ExclusiveStartKey = data.LastEvaluatedKey; docClient.scan(params, onScan); } } }