在同一服务器上获取多个数据库

问题描述 投票:0回答:1

我使用AdonisJS和MSSQL。我在同一台服务器上有一些数据库:https://i.imgur.com/d4Eqfpt.png

在我的.env中,我具有此配置:

DB_CONNECTION=mssql
DB_HOST=127.0.0.1
DB_PORT=1433
DB_USER=sa
DB_PASSWORD=123456
DB_DATABASE=WEB_PANEL

问题是,我有自己的API来发出这样的请求:

connectToDatabase('mssql://id:pw@localhost').then(async () => {
            let onlinePlayers = await User.getOnlinePlayers()
            let numberOfStaff = staff.length
            let numberOfOnlinePlayers = onlinePlayers.recordset.length

            return view.render('system.index', { totalPlayers: numberOfOnlinePlayers, numberOfStaff: numberOfStaff })
        })
    }

而且我有此错误:

warning:
warning:
  WARNING: Adonis has detected an unhandled promise rejection, which may
  cause undesired behavior in production.
  To stop this warning, use catch() on promises or wrap await
  calls inside try/catch.

TypeError: Cannot read property 'substr' of null
    at parseConnectionURI (C:\Users\didi\Desktop\drpanel\panel\node_modules\mssql\lib\connectionstring.js:21:32)
    at Object.resolveConnectionString [as resolve] (C:\Users\didi\Desktop\drpanel\panel\node_modules\mssql\lib\connectionstring.js:205:72)
    at new ConnectionPool (C:\Users\didi\Desktop\drpanel\panel\node_modules\mssql\lib\base.js:127:40)
    at new ConnectionPool (C:\Users\didi\Desktop\drpanel\panel\node_modules\mssql\lib\tedious.js:175:1)
    at Object.connect (C:\Users\didi\Desktop\drpanel\panel\node_modules\mssql\lib\base.js:1592:22)
    at connectToDatabase (C:\Users\didi\Desktop\drpanel\panel\drapi\src\core\connection.handler.js:4:15)
    at SystemController.showSystemPage (C:\Users\didi\Desktop\drpanel\panel\app\Controllers\Http\Panel\SystemController.js:8:9)
    at Server._routeHandler (C:\Users\didi\Desktop\drpanel\panel\node_modules\@adonisjs\framework\src\Server\index.js:121:31)
    at MiddlewareBase._resolveMiddleware (C:\Users\didi\Desktop\drpanel\panel\node_modules\@adonisjs\middleware-base\index.js:195:28)
    at Runnable._invoke (C:\Users\didi\Desktop\drpanel\panel\node_modules\co-compose\src\Runnable.js:76:42)
    at C:\Users\didi\Desktop\drpanel\panel\node_modules\co-compose\src\Runnable.js:73:34
    at f (C:\Users\didi\Desktop\drpanel\panel\node_modules\once\once.js:25:25)
    at Authenticated.handle (C:\Users\didi\Desktop\drpanel\panel\app\Middleware\Authenticated.js:16:19)
    at async ConvertEmptyStringsToNull.handle (C:\Users\didi\Desktop\drpanel\panel\app\Middleware\ConvertEmptyStringsToNull.js:13:5)
    at async AuthInit.handle (C:\Users\didi\Desktop\drpanel\panel\node_modules\@adonisjs\auth\src\Middleware\AuthInit.js:60:5)
    at async Shield.handle (C:\Users\didi\Desktop\drpanel\panel\node_modules\@adonisjs\shield\src\Shield\index.js:417:5)

例如,getOnlinePlayers()是:

    static async getOnlinePlayers() {
        let onlinePlayers = await sql.query`
        USE DR2_USER
        SELECT TOP 10 * FROM TB_CharacterSub
        WHERE f_ConnectionChannel != 0`

        return onlinePlayers
    }

例如,我想使用DR2_USER数据库,但我不能:/

请有人解决吗?

谢谢!

javascript node.js database sql-server-2014 adonis.js
1个回答
0
投票
您可以编辑您的config/database.js以配置多个数据库连接,并将清醒模型设置为使用该连接

https://adonisjs.com/docs/4.1/lucid#_connection

class User extends Model { static get connection () { return 'mysql' } }

© www.soinside.com 2019 - 2024. All rights reserved.