Nie znam dobrze interfejsu PostgreSQL node.js, ale myślę, że widzę problem. To jest literał ciągu SQL, który zawiera numerowany symbol zastępczy:
'%$1%'
$1
wewnątrz tego ciągu nie zostanie zastąpiony wartością tag
ponieważ symbole zastępcze wewnątrz ciągów wcale nie są symbolami zastępczymi, to tylko podciągi, które mają taką samą formę jak symbol zastępczy.
Dwie typowe opcje to:
- Dodaj
%
symbole wieloznaczne w kodzie klienta. - Połącz
%
symbole wieloznaczne na ciągi w bazie danych.
Pierwsza z nich wyglądałaby tak:
db.client.query("SELECT * FROM tags WHERE name LIKE $1", ['%' + tag + '%'], ...
a drugi tak:
db.client.query("SELECT * FROM tags WHERE name LIKE '%' || $1 || '%'", [tag], ...
Użyj preferowanego podejścia.