PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

khi nào thì ngắt kết nối và khi nào thì kết thúc ứng dụng khách pg hoặc nhóm

Đầu tiên, từ tài liệu pg *:

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
      })
  })

Mã / cấu trúc này thành thạo / được thực hiện để nhóm của bạn hoạt động, cung cấp thứ của bạn ở đây nhiều thứ. Nếu bạn tắt ứng dụng của mình, kết nối sẽ bị treo bình thường, vì pool được tạo tốt, chính xác là không bị treo, ngay cả khi nó cung cấp cách treo thủ công, hãy xem phần cuối của bài viết . Ngoài ra, hãy xem phần màu đỏ trước đó có nội dung "Bạn phải luôn trả lại ứng dụng khách ..." để chấp nhận

  • client.release() bắt buộc hướng dẫn
  • trước khi kết luận đối số.
  • bạn mở rộng phạm vi / đóng khách hàng trong phạm vi gọi lại của mình.

Sau đó , từ tài liệu pg.client *:

Truy vấn văn bản thuần túy với một lời hứa

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())

với tôi dường như cú pháp rõ ràng nhất:

  • bạn kết thúc khách hàng bất kể kết quả.
  • bạn truy cập kết quả trước khi kết thúc khách hàng.
  • bạn không phạm vi / đóng khách hàng trong các lệnh gọi lại của bạn

Đây là loại lựa chọn giữa hai cú pháp có thể gây nhầm lẫn ngay từ cái nhìn đầu tiên, nhưng không có gì kỳ diệu ở đó, đó là cú pháp xây dựng triển khai. gọi lại và truy vấn, không dựa trên những cấu trúc đó, chỉ cần chọn những gì trang nhã nhất cho đôi mắt của bạn và đưa nó vào mã.

* Tôi đã thêm nhận xét // xxx của bạn ở đây để rõ ràng



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tìm kiếm một loạt các số nguyên trong PostgreSQL?

  2. cái cào bị hủy bỏ! LỖI:phải là chủ sở hữu của cơ sở dữ liệu

  3. Nhận các phạm vi ngày liên tiếp khác nhau từ các phạm vi ngày trùng lặp

  4. Hướng dẫn về Pgpool cho PostgreSQL:Phần thứ hai

  5. Ví dụ về trình kích hoạt CHO MỖI STATEMENT