Saya tidak tahu antarmuka node.js PostgreSQL dengan baik, tetapi saya pikir saya bisa melihat masalahnya. Ini adalah literal string SQL yang berisi placeholder bernomor:
'%$1%'
$1
di dalam string itu tidak akan diganti dengan nilai tag
karena placeholder di dalam string sama sekali bukan placeholder, melainkan hanya substring yang kebetulan memiliki bentuk yang sama dengan placeholder.
Dua opsi yang biasa adalah:
- Tambahkan
%
wildcard dalam kode klien. - Menggabungkan
%
wildcard ke string di dalam database.
Yang pertama akan terlihat seperti ini:
db.client.query("SELECT * FROM tags WHERE name LIKE $1", ['%' + tag + '%'], ...
dan yang kedua seperti ini:
db.client.query("SELECT * FROM tags WHERE name LIKE '%' || $1 || '%'", [tag], ...
Gunakan pendekatan mana pun yang Anda inginkan.