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