连接管理器

未匹配的标注

连接管理器类 负责管理一个或多个 数据库连接 实例。你可以从数据库模块访问 manager

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

const manager = Database.manager

方法/属性

以下是连接管理器类上可用的方法/属性列表。通常情况下,你不必直接与管理器交互,因为以下方法是在内部调用的。

add

通过给连接提供 name 和其他配置,你可以让管理器注册一个新的连接,数据库模块会自动注册所有定义在 config/database.ts 内的连接。

const name = 'pg'

const config = {
  client: 'pg',
  connection: {
    // ...
  },
  healthCheck: true
}

Database.manager.add(name, config)

connect

connect 方法通过其名称实例化一个预先注册的连接。 在后台,它调用 Connection 类 上的 connect 方法。

多次调用此方法的结果是无操作。

Database.manager.connect('pg')

get

按名称返回预注册连接的连接节点。

const {
  name,
  state,
  connection,
  config
} = Database.manager.get('pg')

以下是可用属性的列表。

name

连接的名称,在添加时定义。


config

引用注册的配置。


connection

对底层 连接类 实例的引用。


state

连接的当前状态。

  • registered:连接已使用 add 方法注册。

  • open:连接已打开以接受新请求。

  • closing:在关闭连接的过程中。 不能再从此连接创建或执行新查询。

  • closed:连接已经关闭,不能再接受任何请求。你必须再次调用 connect 方法。

  • migrating:连接配置已被修改,正在迁移以使用新配置创建新连接实例。


has

返回一个布尔值,告知连接是否已向管理器注册。

if (!Database.manager.has('pg')) {
  Database.manager.add('pg', {})
}

isConnected

查找连接是否处于 open 状态。

if (!Database.manager.isConnected('pg')) {
  Database.manager.connect('pg')
}

patch

patch 方法允许你更新给定连接的配置,而无需关闭现有连接或中止正在进行的查询。

修改连接后,所有新查询都将使用较新的配置。

当你有一个多租户应用程序并且你想为租户动态注册连接时,patch 方法非常有用。

Database.manager.patch('pg', {
  client: 'pg',
  connection: {},
})

// 采用新配置
Database.manager.connect('pg')

close

关闭给定的连接,连接管理器仍将保留连接节点,直到你通过传递第二个参数显式释放连接。

// Close
await Database.manager.close('pg')
Database.manager.has('pg') // true
// Close + Release
await Database.manager.close('pg', true)
Database.manager.has('pg') // false

closeAll

关闭所有注册的连接,可以传递一个布尔参数来释放连接。

await Database.manager.closeAll()
await Database.manager.closeAll(true)

release

从受管理的连接列表中释放连接,连接将自动关闭(如果尚未关闭)。

await Database.manager.release(true)

report

返回所有已注册连接的健康检查报告。

const report = await Database.manager.report()

console.log(report.name)
console.log(report.health.healthy)

事件

以下是连接管理器类发出的事件列表。

db:connection:connect

调用 connect 方法时发出。

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

db:connection:error

无法建立连接时发出。

Database.manager.on('db:connection:error', (error, connection) => {
  console.log(connection)
})

db:connection:disconnect

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

Database.manager.on('db:connection:disconnect', (connection) => {
  console.log(connection)
})

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

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/adonisjs-ref/li...

译文地址:https://learnku.com/docs/adonisjs-ref/li...

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


暂无话题~