sql >> Databáze >  >> RDS >> PostgreSQL

kdy se odpojit a kdy ukončit pg klienta nebo fond

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



  1. seznam pro svázání proměnné v SQL Developer

  2. SqlDateTime.MinValue !=DateTime.MinValue, proč?

  3. Platné formáty časových řetězců pro funkce data/času SQLite

  4. Aktualizace databáze a aplikace Android SQLite