Ich kenne die PostgreSQL-Schnittstelle von node.js nicht so gut, aber ich denke, ich kann das Problem sehen. Dies ist ein SQL-String-Literal, das einen nummerierten Platzhalter enthält:
'%$1%'
Der $1
innerhalb dieser Zeichenfolge wird nicht durch den Wert von tag
ersetzt weil Platzhalter innerhalb von Strings überhaupt keine Platzhalter sind, sondern nur Teilstrings, die zufällig die gleiche Form wie ein Platzhalter haben.
Die beiden üblichen Optionen sind:
- Fügen Sie den
%
hinzu Wildcards im Client-Code. - Verketten Sie
%
Wildcards auf die Strings innerhalb der Datenbank.
Die erste würde so aussehen:
db.client.query("SELECT * FROM tags WHERE name LIKE $1", ['%' + tag + '%'], ...
und die zweite so:
db.client.query("SELECT * FROM tags WHERE name LIKE '%' || $1 || '%'", [tag], ...
Verwenden Sie den von Ihnen bevorzugten Ansatz.