Ottenere tutti gli Item da DynamoDB in Node.js (AWS SDK v3)

In DynamoDB non esiste un "select all" — leggere un'intera tabella significa uno Scan che pagini fino alla fine. Ogni risposta trasporta al massimo 1 MB; iteri, reimmettendo LastEvaluatedKey come ExclusiveStartKey, finché non torna più alcuna chiave.

Code

import {DynamoDBClient, ScanCommand} from '@aws-sdk/client-dynamodb';

const client = new DynamoDBClient({region: 'us-east-1'});

const items = [];
let lastEvaluatedKey;

do {
  const response = await client.send(
    new ScanCommand({
      TableName: 'Music',
      ExclusiveStartKey: lastEvaluatedKey
    })
  );

  items.push(...(response.Items ?? []));
  lastEvaluatedKey = response.LastEvaluatedKey;
} while (lastEvaluatedKey);

console.log(`Table holds ${items.length} items`);

Spiegazione

  • Il ciclo è il punto centrale — una singola chiamata Scan NON restituisce la tabella; restituisce fino a 1 MB. Fermarsi dopo la prima risposta è il classico bug "al mio scan mancano degli Item". Solo un LastEvaluatedKey assente significa che hai letto tutto.
  • Memoriaitems contiene l'intera tabella. Per tabelle grandi, elabora ogni pagina all'interno del ciclo (scrivi su file, stream, aggrega) invece di accumulare.
  • Più veloce sulle tabelle grandi: scan parallelo — dividi il lavoro con Segment / TotalSegments: esegui N worker, ciascuno che scansiona il proprio segmento con il proprio ciclo di paginazione. Stesso costo totale, tempo reale molto inferiore.
  • Costo — uno scan completo legge (e fattura) ogni byte di ogni Item, ogni volta che lo esegui. Riduci la risposta con ProjectionExpression (meno attributi restituiti — il costo di lettura resta lo stesso), e non mettere uno scan su un percorso critico; a questo servono Query e la progettazione dei pattern di accesso.
  • Vuoi filtrare già che ci sei? Una FilterExpression scarta gli Item dopo che sono stati letti (e fatturati) — vedi Scan con un filtro.

Fallo visivamente

Dare un'occhiata a una tabella non richiede uno script: scarica DynoTable per sfogliare qualsiasi tabella in una griglia paginata — pagina gli scan per te, senza cicli da sbagliare. E prima di fare scan-e-pagare, il calcolatore dei prezzi DynamoDB mostra quanto costa davvero una lettura completa della tua tabella.

Esempi correlati

References

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Costruisci questa richiesta visivamente

Componi questa operazione nel Generatore di query DynamoDB gratuito — condizione di chiave, filtro, indice, Limit, ordine di ordinamento e un loop di paginazione — e copiala come programma eseguibile per SDK v3, CLI o boto3.

Apri il Generatore di query DynamoDB

Lavora con DynamoDB senza la Console

DynoTable è un client desktop veloce per DynamoDB — sfoglia le tabelle, esegui query in stile SQL e modifica gli Item localmente.