java 连接多实例_Sequelize:在一个实例上连接到多个MSSQL数据库

我在本地计算机上运行了一个MSSQL服务器(全新安装),它拥有三个数据库:global,client0,client1 . 我想在node.js后端使用Sequelize连接到数据库 .

鉴于下面的代码,当我只尝试连接到一个数据库时, Build 连接正常 . 一旦我尝试连接到多个数据库,我就会被拒绝的承诺抛出异常,说(虽然 Build 了与第一个提供的数据库的连接):

{ SequelizeConnectionError

at Connection.connection.on (...\server\node_modules\sequelize\lib\dialects\mssql\connection-manager.js:75:16)

at Connection.emit (events.js:182:13)

at Connection.cleanupConnection (...\server\node_modules\tedious\lib\connection.js:576:16)

at Connection.enter (...\server\node_modules\tedious\lib\connection.js:1945:12)

at Connection.transitionTo (...\server\node_modules\tedious\lib\connection.js:981:26)

at Connection.socketError (...\server\node_modules\tedious\lib\connection.js:1675:14)

at Connection.dispatchEvent (...\server\node_modules\tedious\lib\connection.js:992:38)

at Connection.socketError (...\server\node_modules\tedious\lib\connection.js:1010:12)

at Socket.emit (events.js:182:13)

at emitErrorNT (internal/streams/destroy.js:82:8)

at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)

at process._tickCallback (internal/process/next_tick.js:63:19)

name: 'SequelizeConnectionError',

parent: 'Connection was closed by remote server',

original: 'Connection was closed by remote server' }

config.js

module.exports = {

port: 8081,

clients: [

{

db: {

database: 'global',

user: 'SA',

password: 'Super123!',

options: {

host: 'localhost',

port: 1434,

dialect: 'mssql',

operatorsAliases: false

}

},

authentication: {

jwtSecret: 'secret'

}

},

{

db: {

database: 'client0',

user: 'SA',

password: 'Super123!',

options: {

host: 'localhost',

port: 1434,

dialect: 'mssql',

operatorsAliases: false

}

}

},

{

db: {

database: 'client1',

user: 'SA',

password: 'Super123!',

options: {

host: 'localhost',

port: 1434,

dialect: 'mssql',

operatorsAliases: false

}

}

}

]

};

index.js

const fs = require('fs');

const path = require('path');

const Sequelize = require('sequelize');

const config = require('../config');

const dbConnections = [];

config.clients.forEach((client) => {

const sequelize = new Sequelize(

client.db.database,

client.db.user,

client.db.password,

client.db.options

);

const dbConnection = {};

fs

.readdirSync(__dirname)

.filter(file => file !== 'index.js')

.forEach((file) => {

const model = sequelize.import(path.join(__dirname, file));

dbConnection[model.name] = model;

});

dbConnection.sequelize = sequelize;

dbConnection.Sequelize = Sequelize;

dbConnections.push({ ...dbConnection });

});

module.exports = dbConnections;

app.js

const dbConnections = require('./models/index');

dbConnections.forEach((dbConnection) => {

dbConnection.sequelize.sync({ force: false })

.then(() => {

console.log('Done.');

})

.catch((err) => {

console.log(err);

});

});

我将不胜感激任何建议和/或帮助 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值