DynamoDB — The expression can not be empty
TL;DR — Anda meneruskan parameter expression (FilterExpression, KeyConditionExpression, ProjectionExpression, UpdateExpression, atau ConditionExpression) sebagai string kosong "". DynamoDB mensyaratkan parameter expression berupa expression tidak-kosong yang valid atau tidak ada sama sekali — string kosong tidak valid. Sertakan parameter hanya ketika Anda benar-benar punya expression; jika tidak, hilangkan kuncinya.
Apa artinya
ValidationException: Invalid FilterExpression: The expression can not be empty;
ValidationException: Invalid KeyConditionExpression: The expression can not be empty;DynamoDB memperlakukan string kosong berbeda dari parameter yang dihilangkan. Menghilangkan FilterExpression berarti "tidak ada filter"; meneruskan FilterExpression: "" berarti "ini filter" — dan kemudian tidak ada yang di-parse, jadi validasi gagal. Hal yang sama berlaku untuk setiap parameter expression.
Mengapa terjadi
- Param yang dibangun secara kondisional selalu diatur — kode selalu melampirkan
FilterExpressionke objek permintaan, lalu membiarkannya""ketika tidak ada filter dipilih. - Pembantu/ORM/konektor yang mengeluarkan string expression kosong alih-alih menghapus kunci ketika daftar filter kosong.
- Penggabungan string yang tidak menghasilkan apa pun — menggabungkan array kondisi kosong menghasilkan
"". - Konten yang dipangkas habis — placeholder dihapus, meninggalkan expression kosong.
Cara memperbaikinya
- Atur parameter hanya ketika tidak kosong. Bangun objek params secara kondisional:
if (filter) params.FilterExpression = filter;— jangan pernah menetapkan"". - Hapus kunci kosong sebelum panggilan — hapus properti expression apa pun yang nilainya string kosong/spasi dari permintaan.
- Jaga builder Anda — jika daftar kondisi kosong, jangan lampirkan expression sama sekali.
- Ingat mereka independen —
ExpressionAttributeNames/Valuesjuga harus dihilangkan (bukan{}yang tidak dirujuk apa pun) ketika tidak ada expression yang menggunakannya. - Untuk baca seluruh-tabel,
ScantanpaFilterExpressionbenar — hilangkan parameter daripada meneruskan yang kosong.
Memprototipe kueri sebelum Anda menghubungkannya ke kode? Jalankan di aplikasi desktop DynoTable — ia hanya mengirim parameter expression yang benar-benar Anda isi, jadi Anda tidak akan mengirim filter string-kosong.
Kesalahan terkait
- Query key condition not supported —
KeyConditionExpressionsalah bentuk (bukan kosong). - Invalid UpdateExpression syntax — update expression tidak-kosong tetapi salah bentuk.
- Pelajari: Filtering strategies · Key condition expressions
References
- 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
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.