连接管理器

未匹配的标注

连接管理器类 负责管理一个或多个 数据库连接 实例。你可以从数据库模块访问 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
发起讨论 查看所有版本


暂无话题~