AdonisJS 5 模型如何指定不同数据库连接 无需使用Database.manager
AdonisJS v5 模型层直接指定数据库连接方案
可以直接在Model层绑定指定数据库连接,无需每次通过Database.manager手动切换,操作步骤如下:
前置准备
- 先在
config/database.ts中完成所有需要用到的多数据库连接配置,每个连接对应唯一的连接名称,比如默认pg、第二个业务库mysql_biz、第三方同步库mongo_sync等
模型固定绑定连接
直接在对应Model类中定义静态connection属性,属性值为你在配置中定义的对应连接名即可,示例代码:
import { DateTime } from 'luxon' import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' export default class Order extends BaseModel { // 绑定该模型专属的数据库连接,后续所有该模型的默认操作都走这个连接 public static connection = 'mysql_biz' @column({ isPrimary: true }) public id: number @column() public orderNo: string @column.dateTime({ autoCreate: true }) public createdAt: DateTime @column.dateTime({ autoCreate: true, autoUpdate: true }) public updatedAt: DateTime }
额外说明
- 模型静态属性定义的连接是全局默认绑定,所有常规CURD、关联查询都会自动走对应连接,无需额外手动指定
- 如果有临时切换连接的需求,可以在查询时调用模型的
connection方法手动指定,该临时指定优先级高于模型静态属性:// 临时切到mongo_sync连接查询订单数据 const order = await Order.connection('mongo_sync').query().where('order_no', 'xxx').first() - 关联查询场景下,关联的模型默认走自身配置的连接,不会继承主查询模型的连接,如需临时统一连接,需要给每个关联模型单独指定
内容的提问来源于stack exchange,提问作者Felix gani harris
相关产品推荐
相关产品推荐

