DynamoDB — L'espressione non può essere vuota
TL;DR — Hai passato un parametro di espressione (FilterExpression, KeyConditionExpression, ProjectionExpression, UpdateExpression o ConditionExpression) come una stringa vuota "". DynamoDB richiede che i parametri dell'espressione siano un'espressione valida non vuota o del tutto assenti: una stringa vuota non è valida. Includi il parametro solo quando hai effettivamente un'espressione; altrimenti omettere la chiave.
Cosa significa
ValidationException: Invalid FilterExpression: The expression can not be empty;
ValidationException: Invalid KeyConditionExpression: The expression can not be empty;DynamoDB tratta una stringa vuota in modo diverso da un parametro omesso. Omettere "FilterExpression" significa "nessun filtro"; passare FilterExpression: "" significa "ecco un filtro" - e quindi non c'è nulla da analizzare, quindi la convalida fallisce. Lo stesso vale per ogni parametro dell'espressione.
Perché succede
- Parametri creati in modo condizionale sempre impostati — il codice associa sempre
FilterExpressionall'oggetto della richiesta, quindi lo lascia""quando non è stato scelto alcun filtro. - Un helper/ORM/connettore che emette una stringa di espressione vuota invece di rilasciare la chiave quando l'elenco dei filtri è vuoto.
- Concatenazione di stringhe che non ha prodotto nulla — unendo un array vuoto di condizioni si ottiene
"". - Contenuto tagliato: i segnaposto sono stati rimossi, lasciando un'espressione vuota.
Come risolverlo
- Imposta il parametro solo quando non è vuoto. Costruisci l'oggetto params in modo condizionale:
if (filter) params.FilterExpression = filter;— non assegnare mai"". - Elimina le chiavi vuote prima della chiamata: elimina dalla richiesta qualsiasi proprietà dell'espressione il cui valore sia una stringa vuota/spazi bianchi.
- Proteggi il tuo costruttore: se l'elenco delle condizioni è vuoto, non allegare affatto l'espressione.
- Ricorda che sono indipendenti — Anche
ExpressionAttributeNames/Valuesdovrebbero essere omessi (non{}referenziato da nulla) quando non c'è alcuna espressione che li utilizza. - Per una lettura dell'intera tabella, uno
ScansenzaFilterExpressionè corretto: ometti il parametro anziché passarne uno vuoto.
Eseguilo in DynoTable
DynoTable invia solo i parametri di espressione effettivamente configurati: un elenco di filtri vuoto omette completamente FilterExpression invece di passare "". Apri una tabella con ⌘K, aggiungi filtri nel pannello delle query e copia la richiesta generata quando è presente almeno una condizione.
Utilizza il Query Builder per prototipare le letture prima di collegare i parametri condizionali nel codice. La gestione temporanea (⌘S) rileva gli errori di espressione vuota negli aggiornamenti. Cambia profilo con ⌘P; Verifica connessione in Impostazioni → Profili conferma la tabella di destinazione. Consulta Connetti a AWS e Installa. Un parametro omesso e una stringa vuota sono diversi: solo quest'ultima attiva questo errore.
Fonti
- Utilizzo delle espressioni in DynamoDB (verificato il 13-07-2026)
- Query: riferimento Amazon DynamoDB API (verificato il 13-07-2026)
Errori correlati
- Condizione della chiave di query non supportata — una
KeyConditionExpressionnon valida (non vuota). - Sintassi UpdateExpression non valida — un'espressione di aggiornamento non vuota ma non valida.
- Impara: Strategie di filtro · Espressioni di condizioni chiave
Riferimenti
- Utilizzo delle espressioni in DynamoDB - Guida per sviluppatori di Amazon DynamoDB
- Query: riferimento Amazon DynamoDB API
- Scansione: riferimento Amazon DynamoDB API
- Gestione degli errori con DynamoDB — Guida per sviluppatori di Amazon DynamoDB
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.