質問
現在、node-postgres
を使っているのですが、パラメータ付きクエリを使用する場合以下のように記載する必要があるとのことです。
参考:https://node-postgres.com/features/queries
js
1const sql = 'INSERT INTO users(name, email) VALUES($1, $2) RETURNING *' 2const values = ['brianc', 'brian.m.carlson@example.com'] 3// 実行 4client.query(sql, values, (err, res) => {})
SQL中のパラメータは$1,$2
のように指定していき、値自体は配列で渡すことでインデックスと対応付けをしていると思いますが、
この指定をインデックスではなくパラメータ名で指定するような方法はありますでしょうか。
ライブラリの紹介、もしくはコードで解決できればと思います。
以下、こんな感じで書けるようにしたいというコードです。
js
1// 理想的な書き方 2const sql = 'INSERT INTO users(name, email) VALUES( $name , $email ) RETURNING *' 3// 以下のような感じでパラメータと値を紐づける 4const values = [ 5 { key: "$name", value: "brianc"}, 6 { key: "$email", value: "brian.m.carlson@example.com" } 7];
というのも、動的にSQLとパラメータを組み立てる要件があり、
具体的にはa,b,c
の任意の引数を受る関数があり、実際に受け取ったパラメータだけ更新する処理を書きたいです。
例.a,c
だけが指定された場合UPDATE hoge_table SET a = $a, c = $c
といった具合にしたい
調べたこと・検討している解決法
yesql
というものがあり、こちらが希望の挙動通りのようです
https://stackoverflow.com/questions/32610213/node-postgres-named-parameters-query-nodejs
- コードで解決する場合は以下リンクのような方法になりそうです
上記のいずれでも解決はできそうですが、より良いライブラリ or コーディングが知れれば尚良いと思い、質問した次第です。
よろしくお願いいたします。
あなたの回答
tips
プレビュー