Tôi không biết rõ về giao diện node.js PostgreSQL nhưng tôi nghĩ tôi có thể thấy vấn đề. Đây là một chuỗi SQL có chứa một trình giữ chỗ được đánh số:
'%$1%'
$1
bên trong chuỗi đó sẽ không được thay thế bằng giá trị của thẻ tag
bởi vì trình giữ chỗ bên trong chuỗi hoàn toàn không phải là trình giữ chỗ, chúng chỉ là những chuỗi con có cùng dạng với trình giữ chỗ.
Hai tùy chọn thông thường là:
- Thêm
%
ký tự đại diện trong mã khách hàng. - Nối
%
ký tự đại diện vào các chuỗi bên trong cơ sở dữ liệu.
Cái đầu tiên sẽ trông như thế này:
db.client.query("SELECT * FROM tags WHERE name LIKE $1", ['%' + tag + '%'], ...
và thứ hai như thế này:
db.client.query("SELECT * FROM tags WHERE name LIKE '%' || $1 || '%'", [tag], ...
Sử dụng bất kỳ cách tiếp cận nào bạn thích.