我在本地计算机上运行了一个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);
});
});
我将不胜感激任何建议和/或帮助 .