Nejprve z dokumentace na stránce *:
const { Pool } = require('pg')
const pool = new Pool()
// the pool with emit an error on behalf of any idle clients
// it contains if a backend error or network partition happens
pool.on('error', (err, client) => {
console.error('Unexpected error on idle client', err) // your callback here
process.exit(-1)
})
// promise - checkout a client
pool.connect()
.then(client => {
return client.query('SELECT * FROM users WHERE id = $1', [1]) // your query string here
.then(res => {
client.release()
console.log(res.rows[0]) // your callback here
})
.catch(e => {
client.release()
console.log(err.stack) // your callback here
})
})
Tento kód/konstrukt stačí /vyrobeno, aby váš bazén fungoval, a poskytuje tady, co máte věci. Pokud aplikaci vypnete, připojení normálně přestane reagovat, protože fond je vytvořen dobře, přesně tak, aby nezamrzl, i když poskytuje ruční způsob zavěšení, viz poslední část článek .Podívejte se také na předchozí červenou sekci, která říká „Klienta musíte vždy vrátit...“ k přijetí
- povinné
client.release()
instrukce - před přístupem k argumentu.
- rozsah/uzavření klienta v rámci vašich zpětných volání.
Potom , z dokumentace pg.client *:
Dotaz ve formátu prostého textu se slibem
const { Client } = require('pg').Client
const client = new Client()
client.connect()
client.query('SELECT NOW()') // your query string here
.then(result => console.log(result)) // your callback here
.catch(e => console.error(e.stack)) // your callback here
.then(() => client.end())
zdá se mi nejjasnější syntaxe:
- ukončíte klienta bez ohledu na výsledky.
- k výsledku se dostanete před ukončením klienta.
- nerozsahujete/neuzavřete klienta v rámci svých zpětných volání
Právě tento druh opozice mezi dvěma syntaxemi může být na první pohled matoucí, ale není v tom žádná magie, je to syntaxe implementační konstrukce. Zaměřte se na vaši zpětná volání a dotazy, ne na tyto konstrukce, stačí vybrat to nejelegantnější pro vaše oči a nakrmit to svým kód.
*Přidal jsem komentáře // vaše xxx zde pro přehlednost