我使用节点js和模块pg连接到postrgresql 我想搜索一个标签数据库,但我不能让它工作, 在变量标签中我保存了url的param,但是consult不会返回任何结果。 我该怎么办?
app.get("/tags", function(req, res){
var tag = req.query.q;
res.json(tag)
var search = db.client.query("SELECT * FROM tags WHERE name LIKE '%$1%'", [tag], function(err, result){
res.json(result);
}
);
});
答案 0 :(得分:16)
我不知道node.js PostgreSQL接口,但我认为我可以看到问题。这是一个包含编号占位符的SQL字符串文字:
'%$1%'
该字符串中的$1
不会被tag
的值替换,因为字符串中的占位符根本不是占位符,它们只是碰巧具有相同形式的子串占位符。
两个常用选项是:
%
通配符。%
通配符连接到数据库中的字符串。第一个看起来像这样:
db.client.query("SELECT * FROM tags WHERE name LIKE $1", ['%' + tag + '%'], ...
和第二个像这样:
db.client.query("SELECT * FROM tags WHERE name LIKE '%' || $1 || '%'", [tag], ...
使用您喜欢的任何方法。
答案 1 :(得分:5)
ES6解决方案类似于:
client.query('select * from users where user_name Ilike $1', [`%${req.query.q}%`], (err1, result) => { ...