连接
连接
连接类 (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)
})