AdonisJS 5允许您在运行时动态连接不同的数据库。要实现这一点,您可以使用Adonis提供的两个功能:Database.manager
和Database.connect()
。
以下是示例代码:
// config/database.js
module.exports = {
connection: 'pg', // 默认数据库连接
pg: {
client: 'pg',
connection: {
host: '127.0.0.1',
port: '5432',
user: 'postgres',
password: 'secret',
database: 'my_db',
},
},
mysql: {
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'root',
password: '',
database: 'my_db',
},
},
};
const Database = use('Database');
class UserController {
async index({request}) {
const { params } = request;
const conn = `user_${params.userId}`;
const config = { connection: conn };
const userDatabase = await Database.manager.get('mysql').newConnection(config);
const users = await userDatabase.table('users').select('*');
return users;
}
}
module.exports = UserController;
在上面的示例中,我们首先获取要使用的用户数据库的名称,然后我们使用Database.manager.get()
方法获取与要使用的数据库客户端相关的配置对象。然后我们使用.newConnection()
方法连接到数据库,该方法接受一个配置对象以指定要使用的连接名称。
一旦我们获得了连接,就可以使用userDatabase
对象进行查询。
希望这个示例能帮助你理解如何在运行时动态地连接AdonisJS 5中的不同数据库。