连接

未匹配的标注

连接

连接类 (connection)负责管理给定数据库连接的生命周期。你可以使用 Database.manager 属性访问连接实例。

import Database from '@ioc:Adonis/Lucid/Database'

const { connection } = Database.manager.get('primary')

连接名称来自 config/database.ts 文件。在以下示例中,primary 是连接名称。

{
  connections: {
    primary: {
      client: 'pg',
      connection: {
        // ...
      },
    }
  }
}

方法/属性

以下是连接类的可用方法和属性列表。用户登陆代码不直接与连接实例交互,因为内部调用了以下方法。

connect

调用 connect 方法会实例化一个新的 Knex.js 实例。如果你使用读/写副本,则会创建两个 Knex.js 实例,一个用于写入,一个用于读取。

注:运行新的数据库查询时会自动调用 connect 方法。

connection.connect()

disconnect

disconnect 方法断开底层驱动程序连接并销毁 Knex 实例。

await connection.disconnect()

getReport

返回给定的安全检查报告。

const report = await connection.getReport()

pool/readPool

对底层 tarnjs 池对象的引用。该属性仅在调用 connect 方法后可用。

connection.pool.numFree()
connection.readPool.numFree()

client/readClient

对底层 Knex 实例的引用。该属性仅在调用 connect 方法后可用。

hasReadWriteReplicas

一个布尔值,用于了解连接是否正在使用读写副本。

connection.hasReadWriteReplicas

ready

一个布尔值,用于了解连接是否已准备好进行查询。如果没有,那么你必须调用 connect 方法。

if (!connection.ready) {
  connection.connect()
}

config

对配置对象的引用。

connection.config

name

对连接名的引用。

connection.name

事件

以下是连接类发出的事件列表

connect

调用 connect 方法时发出。

connection.on('connect', (self) => {
  console.log(self === connection) // true
})

error

无法建立连接时发出。

connection.on('error', (error, self) => {
  console.log(error)
})

disconnect

当连接和 Knex 实例被破坏时发出。

connection.on('disconnect', (self) => {
  console.log(self)
})

disconnect:error

当无法断开或销毁 Knex 实例时发出。

connection.on('disconnect:error', (error, self) => {
  console.log(error)
})

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~