Eu não conheço bem a interface do PostgreSQL node.js, mas acho que posso ver o problema. Este é um literal de string SQL que contém um espaço reservado numerado:
'%$1%'
O
$1
dentro dessa string não será substituído pelo valor de tag
porque placeholders dentro de strings não são placeholders, eles são apenas substrings que por acaso têm a mesma forma que um placeholder. As duas opções usuais são:
- Adicione o
%
curingas no código do cliente. - Concatenar o
%
curingas nas strings dentro do banco de dados.
A primeira ficaria assim:
db.client.query("SELECT * FROM tags WHERE name LIKE $1", ['%' + tag + '%'], ...
e o segundo assim:
db.client.query("SELECT * FROM tags WHERE name LIKE '%' || $1 || '%'", [tag], ...
Use a abordagem que preferir.