Node.js Nodejs MSSQL如何同时池化多个数据库
我正在使用NodeJS构建一个庞大的内部网,从ASP.NETC#转换而来。我经常遇到数据库错误,例如在连接关闭或连接必须打开时无法使用连接等。我正在尝试转换为连接池,但遇到了问题,因为我正在连接(当前)6个不同的数据库,并且是节点MSSQL的新手,我有点不知如何继续 最初,我调用“runquerys()”传递配置数据,然后从那里打开到所需数据库的连接。连接详细信息存储在database.js文件中的JSON对象中。我现在尝试在database.js文件中创建池,并将其作为要连接的对象返回Node.js Nodejs MSSQL如何同时池化多个数据库,node.js,sql-server,express,Node.js,Sql Server,Express,我正在使用NodeJS构建一个庞大的内部网,从ASP.NETC#转换而来。我经常遇到数据库错误,例如在连接关闭或连接必须打开时无法使用连接等。我正在尝试转换为连接池,但遇到了问题,因为我正在连接(当前)6个不同的数据库,并且是节点MSSQL的新手,我有点不知如何继续 最初,我调用“runquerys()”传递配置数据,然后从那里打开到所需数据库的连接。连接详细信息存储在database.js文件中的JSON对象中。我现在尝试在database.js文件中创建池,并将其作为要连接的对象返回 //d
//database.js
const sql = require('mssql');
// const Config = {
// MCAIntranet: {
// user: 'username',
// password: 'password',
// server: 'mcasql',
// database: 'MCAIntranet',
// options: { enableArithAbort: true }
// },
// DEV_Intranet: {
// server: 'mcasql',
// user: 'username',
// password: 'password',
// database: 'DEV_Intranet_Test',
// options: { enableArithAbort: true }
// },
// CMR: {
// user: 'username',
// password: 'password',
// server: 'mcasql',
// database: 'Corporate_Morning_Reports',
// options: { enableArithAbort: true }
// },
// Lansa: {
// user: 'username',
// password: 'password',
// server: 'mcasql',
// database: 'LANSA',
// options: { enableArithAbort: true }
// },
// Roles: {
// user: 'username',
// password: 'password',
// server: 'mcasql',
// database: 'dotNetRolesDB_New',
// options: { enableArithAbort: true }
// },
// PreAuth:{
// user: 'username',
// password: 'password',
// server: 'mcasql',
// database: 'PreAuth',
// options: { enableArithAbort: true }
// }
// }
const CORPIntranet = () => {
new sql.ConnectionPool({
user: 'username',
password: 'password',
server: 'dbserver',
database: 'CORPIntranet',
options: { enableArithAbort: true }
})
.connect().then(pool => pool)
};
const DEV_Intranet = () => {
new sql.ConnectionPool({
user: 'username',
password: 'password',
server: 'dbserver',
database: 'CORPIntranet_Test',
options: { enableArithAbort: true }
})
.connect().then(pool => pool)
};
const CMR = () => {
new sql.ConnectionPool({
user: 'username',
password: 'password',
server: 'dbserver',
database: 'Corporate_Morning_Reports',
options: { enableArithAbort: true }
})
.connect().then(pool => pool)
};
const Lansa = () => {
new sql.ConnectionPool({
user: 'username',
password: 'password',
server: 'dbserver',
database: 'LANSA',
options: { enableArithAbort: true }
})
.connect().then(pool => pool)
};
const Roles = () => {
new sql.ConnectionPool({
user: 'username',
password: 'password',
server: 'dbserver',
database: 'dotNetRolesDB_New',
options: { enableArithAbort: true }
})
.connect().then(pool => pool)
};
const PreAuth = () => {
new sql.ConnectionPool({
user: 'username',
password: 'password',
server: 'dbserver',
database: 'PreAuth',
options: { enableArithAbort: true }
})
.connect().then(pool => pool)
};
const Config = {
CORPIntranet: CORPIntranet(),
DEV_Intranet: DEV_Intranet(),
CMR: CMR(),
Lansa: Lansa(),
Roles: Roles(),
PreAuth: PreAuth()
}
module.exports = Config;
我使用代码wait dataQuery.runQuery(query,config.PreAuth)调用它代码>
runquery()代码是
我知道最后不需要“sql.close()”,但我正在转换过程中。我现在得到一个类型错误:database.query不是一个函数
若你们能指出我的错在哪里,更好的是链接一个好的教程,假设读者是新手,那个就太好了
提前谢谢
编辑
在runQuery()函数中,我将代码更改为
let pool=await database();
let recordset = await pool.query(query);
现在允许运行查询。但这是正确的方法吗?它能防止多个数据库连接上的错误吗
let pool=await database();
let recordset = await pool.query(query);