DynamoDB — Ekspresi tidak boleh kosong

TL;DR — Anda meneruskan parameter ekspresi (FilterExpression, KeyConditionExpression, ProjectionExpression, UpdateExpression, atau ConditionExpression) sebagai string kosong "". DynamoDB mengharuskan parameter ekspresi berupa ekspresi tidak kosong yang valid atau tidak ada sama sekali — string kosong tidak valid. Hanya sertakan parameter ketika Anda benar-benar memiliki ekspresi; jika tidak, hilangkan kuncinya.

Apa artinya

ValidationException: Invalid FilterExpression: The expression can not be empty;
ValidationException: Invalid KeyConditionExpression: The expression can not be empty;

Mengapa itu terjadi

  • Param yang dibuat secara kondisional selalu disetel — kode selalu melampirkan FilterExpression ke objek permintaan, lalu meninggalkannya "" ketika tidak ada filter yang dipilih.
  • Helper/ORM/connector yang mengeluarkan string ekspresi kosong alih-alih membuang kunci saat daftar filter kosong.
  • Penggabungan string yang tidak menghasilkan apa pun — menggabungkan array kondisi kosong akan menghasilkan "".
  • Konten yang dipangkas — placeholder dihapus, meninggalkan ekspresi kosong.

Bagaimana cara memperbaikinya

  1. Hanya atur parameter jika tidak kosong. Buat objek params dengan syarat: if (filter) params.FilterExpression = filter; — jangan pernah menetapkan "".
  2. Hapus kunci kosong sebelum panggilan — menghapus properti ekspresi apa pun yang nilainya berupa string /whitespace kosong dari permintaan.
  3. Jaga pembuat Anda — jika daftar kondisi kosong, jangan lampirkan ekspresi sama sekali.
  4. Ingat bahwa keduanya independenExpressionAttributeNames/Values juga harus dihilangkan (bukan {} yang direferensikan apa pun) jika tidak ada ekspresi yang menggunakannya.
  5. Untuk pembacaan tabel lengkap, Scan tanpa FilterExpression sudah benar — hilangkan parameternya daripada meneruskan parameter kosong.

Jalankan di DynoTable

DynoTable hanya mengirimkan parameter ekspresi yang sebenarnya Anda konfigurasikan — daftar filter kosong menghilangkan FilterExpression seluruhnya alih-alih meneruskan "". Buka tabel dengan ⌘K, tambahkan filter di panel kueri, dan salin permintaan yang dihasilkan ketika setidaknya ada satu kondisi.

Gunakan Pembuat Kueri untuk pembacaan prototipe sebelum memasang parameter kondisional dalam kode. Staging (⌘S) menangkap kesalahan ekspresi kosong pada pembaruan. Ganti profil dengan ⌘P; Uji Koneksi pada Pengaturan → Profil mengonfirmasi tabel target. Lihat Menghubungkan ke AWS dan Instal. Parameter yang dihilangkan dan string kosong berbeda — hanya string kosong yang memicu kesalahan ini.

Sumber

Kesalahan terkait

Referensi

Terakhir diverifikasi 13-07-2026 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.