可將 DELETE
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。
DELETE
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 (`
DELETE FROM articles
WHERE id = $1
RETURNING *
`, [10])
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 (`
DELETE FROM articles
WHERE id = $1
RETURNING *
`, [10])
- 將
DELETE
傳入db.query
DELETE
的 parameter 從$1
開始非$0
,會將id
分配給$1
- 在
DELETE
內加入RETURNING *
回傳所有刪除資料,包含id
pg.query
回傳為 Promise,使用 top level await 處理- 使用 Object Destructure 抽出
rows
才是實際回傳 Array
Conclusion
DELETE
一樣如SELECT
傳入pg.query
即可pg.query
支援 Promise,因此可使用 Promise Chain 或 Async Await 處理皆可