24

postrgresql に接続するためにノード js とモジュール pg を使用しています。タグのデータベースを検索したいのですが、それを機能させることができません。結果を返しません。どうすれば修正できますか?

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

2 に答える 2

42

node.js PostgreSQL インターフェースについてはよくわかりませんが、問題はわかると思います。これは、番号付きのプレースホルダーを含む SQL 文字列リテラルです。

'%$1%'

文字列内のプレースホルダーはプレースホルダーではなく、たまたまプレースホルダーと同じ形式を持つ部分文字列であるため、その文字列の$1内側は の値に置き換えられません。tag

2 つの通常のオプションは次のとおりです。

  1. %クライアント コードにワイルドカードを追加します。
  2. %データベース内の文字列にワイルドカードを連結します。

最初のものは次のようになります。

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

2番目は次のようになります。

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

お好みの方法を使用してください。

于 2013-10-19T23:03:17.037 に答える