DynamoDB — A expressão não pode ficar vazia
TL;DR — Você passou um parâmetro de expressão (FilterExpression, KeyConditionExpression, ProjectionExpression, UpdateExpression ou ConditionExpression) como uma string vazia "". DynamoDB exige que os parâmetros de expressão sejam uma expressão válida e não vazia ou totalmente ausentes - uma string vazia é inválida. Inclua o parâmetro apenas quando você realmente tiver uma expressão; caso contrário, omita a chave.
O que significa
ValidationException: Invalid FilterExpression: The expression can not be empty;
ValidationException: Invalid KeyConditionExpression: The expression can not be empty;DynamoDB trata uma string vazia de maneira diferente de um parâmetro omitido. Omitir FilterExpression significa "sem filtro"; passar FilterExpression: "" significa "aqui está um filtro" - e não há nada para analisar, então a validação falha. O mesmo se aplica a todos os parâmetros de expressão.
Por que isso acontece
- Parâmetros construídos condicionalmente sempre definidos — o código sempre anexa
FilterExpressionao objeto de solicitação e o deixa""quando nenhum filtro foi escolhido. - Um auxiliar/ORM/connector que emite uma string de expressão vazia em vez de descartar a chave quando a lista de filtros está vazia.
- Concatenação de strings que não produziu nada — juntar uma matriz vazia de condições produz
"". - Conteúdo cortado — os espaços reservados foram removidos, deixando uma expressão vazia.
Como corrigir
- Defina o parâmetro apenas quando ele não estiver vazio. Construa o objeto params condicionalmente:
if (filter) params.FilterExpression = filter;— nunca atribua"". - Exclua chaves vazias antes da chamada — retire qualquer propriedade de expressão cujo valor seja uma string vazia/whitespace da solicitação.
- Proteja seu construtor — se a lista de condições estiver vazia, não anexe a expressão.
- Lembre-se de que eles são independentes —
ExpressionAttributeNames/Valuestambém deve ser omitido (e não{}referenciado por nada) quando não houver expressão usando-os. - Para uma leitura de tabela completa, um
ScansemFilterExpressioné correto — omita o parâmetro em vez de passar um parâmetro vazio.
Execute no DynoTable
DynoTable envia apenas parâmetros de expressão que você realmente configura - uma lista de filtros vazia omite totalmente FilterExpression em vez de passar "". Abra uma tabela com ⌘K, adicione filtros no painel de consulta e copie a solicitação gerada quando pelo menos uma condição estiver presente.
Use o Query Builder para prototipar leituras antes de conectar parâmetros condicionais no código. O teste (⌘S) detecta erros de expressão vazia nas atualizações. Alternar perfis com ⌘P; Testar conexão em Configurações → Perfis confirma a tabela de destino. Consulte Conectar ao AWS e Instalar. Um parâmetro omitido e uma string vazia são diferentes — apenas o último aciona esse erro.
Fontes
- Usando expressões em DynamoDB (verificado em 13/07/2026)
- Consulta - Referência Amazon DynamoDB API (verificado em 13/07/2026)
Erros relacionados
- Condição da chave de consulta não suportada — um
KeyConditionExpressionmalformado (não vazio). - Sintaxe UpdateExpression inválida — uma expressão de atualização não vazia, mas malformada.
- Aprenda: Estratégias de filtragem · Expressões de condições principais
Referências
- Usando expressões no DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Consulta — Referência Amazon DynamoDB API
- Digitalizar - Referência Amazon DynamoDB API
- Tratamento de erros com DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.