Ik ken de node.js PostgreSQL-interface niet zo goed, maar ik denk dat ik het probleem wel kan zien. Dit is een letterlijke SQL-string die een genummerde tijdelijke aanduiding bevat:
'%$1%'
De $1
binnen die string wordt niet vervangen door de waarde van tag
omdat placeholders in strings helemaal geen placeholders zijn, het zijn gewoon substrings die toevallig dezelfde vorm hebben als een placeholder.
De twee gebruikelijke opties zijn:
- Voeg de
%
toe jokertekens in de klantcode. - Samenvoeg de
%
jokertekens op de tekenreeksen in de database.
De eerste zou er als volgt uitzien:
db.client.query("SELECT * FROM tags WHERE name LIKE $1", ['%' + tag + '%'], ...
en de tweede zo:
db.client.query("SELECT * FROM tags WHERE name LIKE '%' || $1 || '%'", [tag], ...
Gebruik de benadering die u verkiest.