DynamoDB — La expresión no puede estar vacía
TL;DR — Pasaste un parámetro de expresión (FilterExpression, KeyConditionExpression, ProjectionExpression, UpdateExpression o ConditionExpression) como una cadena vacía "". DynamoDB requiere que los parámetros de expresión sean una expresión válida y no vacía o que estén completamente ausentes: una cadena vacía no es válida. Sólo incluya el parámetro cuando realmente tenga una expresión; de lo contrario, omita la clave.
Qué significa
ValidationException: Invalid FilterExpression: The expression can not be empty;
ValidationException: Invalid KeyConditionExpression: The expression can not be empty;DynamoDB trata una cadena vacía de forma diferente a un parámetro omitido. Omitir FilterExpression significa "sin filtro"; pasar FilterExpression: "" significa "aquí hay un filtro" — y entonces no hay nada que analizar, así que la validación falla. Lo mismo se aplica a cada parámetro de expresión.
Por qué ocurre
- Parámetros construidos condicionalmente siempre establecidos — el código siempre adjunta
FilterExpressional objeto de la petición, y luego lo deja como""cuando no se eligió ningún filtro. - Un helper/ORM/conector que emite una cadena de expresión vacía en lugar de eliminar la clave cuando la lista de filtros está vacía.
- Una concatenación de cadenas que no produjo nada — unir un array vacío de condiciones da
"". - Contenido recortado — se eliminaron los marcadores de posición, dejando una expresión vacía.
Cómo solucionarlo
- Establece el parámetro solo cuando no esté vacío. Construye el objeto de parámetros condicionalmente:
if (filter) params.FilterExpression = filter;— nunca asignes"". - Elimina las claves vacías antes de la llamada — quita de la petición cualquier propiedad de expresión cuyo valor sea una cadena vacía o de espacios en blanco.
- Protege tu generador — si la lista de condiciones está vacía, no adjuntes la expresión en absoluto.
- Recuerda que son independientes —
ExpressionAttributeNames/Valuestambién deben omitirse (no{}sin ser referenciado por nada) cuando no hay ninguna expresión que los use. - Para una lectura de tabla completa, un
ScansinFilterExpressiones correcto — omite el parámetro en lugar de pasar uno vacío.
Ejecútalo en DynoTable
DynoTable solo envía los parámetros de expresión que realmente configuras — una lista de filtros vacía omite FilterExpression por completo en lugar de pasar "". Abre una tabla con ⌘K, añade filtros en el panel de consulta y copia la petición generada cuando haya al menos una condición presente.
Usa el Query Builder para prototipar lecturas antes de cablear parámetros condicionales en el código. El área de preparación (⌘S) detecta los errores de expresión vacía en las actualizaciones. Cambia de perfil con ⌘P; Test Connection en Ajustes → Perfiles confirma la tabla de destino. Consulta Conectar con AWS e Instalación. Un parámetro omitido y una cadena vacía no son lo mismo — solo esta última provoca este error.
Fuentes
- Using expressions in DynamoDB (verificado el 2026-07-13)
- Query — Amazon DynamoDB API Reference (verificado el 2026-07-13)
Errores relacionados
- Query key condition not supported — un
KeyConditionExpressionmal formado (no vacío). - Invalid UpdateExpression syntax — una expresión de actualización no vacía pero mal formada.
- Aprende: Filtering strategies · Key condition expressions
Referencias
- Using expressions in DynamoDB — Amazon DynamoDB Developer Guide
- Query — Amazon DynamoDB API Reference
- Scan — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.