how to make a like search in postgresql and node js

旧巷老猫 提交于 2019-12-04 03:08:02

问题


I am using node js and the module pg for connect to postrgresql i want to make a search for a database of tags but i can't make it work, in the variable tag i saved the param of the url , but the consult doesn't return any results. how can i fix?

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);
            }
        );
    });

回答1:


I don't know the node.js PostgreSQL interface that well but I think I can see the problem. This is an SQL string literal that contains a numbered placeholder:

'%$1%'

The $1 inside that string won't be replaced with the value of tag because placeholders inside strings are not placeholders at all, they're just substrings that happen to have the same form as a placeholder.

The two usual options are:

  1. Add the % wildcards in the client code.
  2. Concatenate the % wildcards onto the strings inside the database.

The first one would look like this:

db.client.query("SELECT * FROM tags WHERE name LIKE $1", ['%' + tag + '%'], ...

and the second like this:

db.client.query("SELECT * FROM tags WHERE name LIKE '%' || $1 || '%'", [tag], ...

Use whichever approach you prefer.




回答2:


an ES6 solution would be something like:

client.query('select * from users where user_name Ilike $1', [`%${req.query.q}%`], (err1, result) => { ...


来源:https://stackoverflow.com/questions/19471756/how-to-make-a-like-search-in-postgresql-and-node-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!