可將 INSERT
Statement 直接傳入 Node-postgres,並且支援 Parameter 方式避免湊字串而造成 SQL Injection。
Version
Node 14.18.1
Node-postgres 8.7.1
Add Library
$ yarn add pg
pg
:安裝 Node-postgres 連接 PostgreSQL。
INSERT
import PG from 'pg'
let { Pool } = PG
let pg = new Pool ({
host: 'localhost',
port: 5432,
user: 'admin',
password: '12345',
database: 'KnexLab'
})
let { rows } = await pg.query (`
INSERT INTO articles (title, content)
VALUES ($1, $2)
RETURNING *
`, ['title 1', 'content 1'])
console.log (rows)
第 5 行
let pg = new Pool ({
host: 'localhost',
port: 5432,
user: 'admin',
password: '12345',
database: 'KnexLab'
})
使用 Node-postgres 連接 PostgreSQL:
host
:設定 hostport
:設定 portuser
:設定 idpassword
:設定 passworddatabase
:設定連接 database
13 行
let { rows } = await pg.query (`
INSERT INTO articles (title, content)
VALUES ($1, $2)
RETURNING *
`, ['title 1', 'content 1'])
- 將
INSERT
傳入db.query
INSERT
的 parameter 從$1
開始,非$0
- Value 須以 Array 傳入
pg.query
第二個 argument - 在
INSERT
內加入RETURING *
回傳所有新增資料,包含id
pg.query
回傳為 Promise,使用 top level await 處理- 使用 Object Destructure 抽出
rows
才是實際回傳 Array
Conclusion
INSERT
一樣如SELECT
傳入pg.query
即可pg.query
支援 Promise,因此可使用 Promise Chain 或 Async Await 處理皆可