promise-mysqlモジュールのプレースホルダの使い方
「AWS LambdaからRDS(MySQL)にSQLを発行する」でpromise-mysqlモジュールの使い方について記述しています。
プレースホルダ
promise-mysqlモジュールではプレースホルダは?です。
import * as mysql from 'promise-mysql'
let conn
export async function handler(event, context) {
try {
conn = mysql.createConnection({
host : 'db.xxxxxxxxx.us-east-2.rds.amazonaws.com',// RDSのエンドポイント
user : 'xxxx',
password : 'xxxx',
database : 'xxxx',
dateStrings: true // 日付型は文字列で返ってくる
});
const result = await conn.query('select * from employee where id = ? and name = ?', [1,'tanaka']);
// 処理
await conn.commit()
} catch(error) {
await conn.rollback()
} finally {
await conn.end()
}
}
カラム名、テーブル名に対してプレースホルダを使う
カラム名やテーブル名を動的に変更したい場合もプレースホルダが使えます。
その場合は、??とします。以下はテーブル名を??とし、引数でテーブル名「employee」を指定する例d背う。
import * as mysql from 'promise-mysql'
let conn
export async function handler(event, context) {
try {
conn = mysql.createConnection({
host : 'db.xxxxxxxxx.us-east-2.rds.amazonaws.com',// RDSのエンドポイント
user : 'xxxx',
password : 'xxxx',
database : 'xxxx',
dateStrings: true // 日付型は文字列で返ってくる
});
const result = await conn.query('select * from ??', ['employee']);
// 処理
conn.commit()
} catch(error) {
eonn.rollback()
} finally {
conn.end();
}
}
in句
where column in (?)というように記述する場合があります。この場合、?には配列を指定すれば勝手にinの中身になります。
const arr = [1,2,3]
await conn.query('select * from employee where id in(?)', [arr])

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント