在 adonis v4 中初始化一个 mysql 连接

Initialize a mysql connection in adonis v4

我想使用从主数据库获取的凭据初始化一个 MySQL 连接,可以在 AdonisV4 上执行此操作吗?

使用 adonis lucid

我无法在配置中设置凭据,因为它们对于发出的每个请求都是特定的。

您将在终端 shell 中调用与 mysql 相关的 npm 库。

npm i --save mysql

AdonisJs 使用 config/database.js 文件中定义的连接值。因此,您可以在 JavaScript 应用程序中为单个 数据库 连接创建一个配置文件,如下所示:

您可以为主数据库创建一个初始环境文件,例如:

HOST=127.0.0.1
PORT=3306
NODE_ENV=development
CACHE_VIEWS=false

对于多个连接,您可以像这样设置您的配置文件:

'use strict'
const Env = use('Env')
const Helpers = use('Helpers')

module.exports = {

connection: Env.get('DB_CONNECTION', 'mysql1'),
  
  mysql1: {
    client: 'mysql',
    connection: {
      host: Env.get('DB_HOST', 'database_host_1'),
      port: Env.get('DB_PORT', '3306'),
      user: Env.get('DB_USER', 'my_database_user_1'),
      password: Env.get('DB_PASSWORD', 'OhMyAdonis'),
      database: Env.get('DB_DATABASE', 'adonis')
    }
  },
  
  mysql2: {
    client: 'mysql',
    connection: {
      host: Env.get('DB_HOST', 'database_host_2'),
      port: Env.get('DB_PORT', '3306'),
      user: Env.get('DB_USER', 'my_database_user_2'),
      password: Env.get('DB_PASSWORD', 'OhMySecondAdonis'),
      database: Env.get('DB_DATABASE', 'another_adonis')
    }
  }
  
}

因此,您可以 select 数据库配置文件在运行时定义的任何连接:

Database
  .connection('mysql1')
  .table('users')

Database
  .connection('mysql2')
  .table('users')

但是,如果您有很多数据库,这种方法会影响 RAM 服务器。因此,如果您有一个像您的情况一样的主数据库,请使用 SQL 查询构建器(如 Objection.js 和基于 knex 的 MySQL 支持,为 Node.JS 选择动态连接.

可以采用 here 的多租户方法。