【发布时间】:2022-02-02 17:51:30
【问题描述】:
我正在构建这个 api,它从数据库获取数据并将数据发布到位于同一服务器上的另一个数据库,但是当我第一次运行应用程序时,我似乎遇到了连接问题,一切正常,但在进行了一些 api 调用之后它只是崩溃并且不再起作用我的猜测是连接没有被关闭
这是我的配置文件,还有一个类似的文件,但使用不同的数据库
const config = {
user :'user',
password :'pass',
server:'sqlserver',
database:'Stock',
options:{
trustedconnection: true,
enableArithAbort : true,
},
port : 1433
}
这些代码为 2 个数据库准备连接池
async function connectStock() {
const pool = new sql.ConnectionPool(config);
try {
await pool.connect();
console.log('Connected to database : ',config);
return pool;
}
catch(err) {
console.log('Database connection failed!', err);
return err;
}
}
async function connectExpiry() {
const pool = new sql.ConnectionPool(configInsert);
try {
await pool.connect();
console.log('Connected to database : ',configInsert);
return pool;
}
catch(err) {
console.log('Database connection failed!', err);
return err;
}
}
这是我获取数据的方式
const getInvoiceDetails = async (request, response, Y_FAC, N_FAC) => {
try {
//const pool = await sql.connect(config);
let DB = await connectStock()
let q =
"select m.CODE_ART,a.a_code,a.DESC_ART,m.NB_CAISS,sum((m.QCAISSE * m.NB_CAISS) + m.QPIECE + m.MORE_FREE + m.QTY_XTRA) as 'TotalPc' ";
q +=
" from cli_fac f inner join cli_mvt m on f.Y_FAC = m.y_fac and f.n_fac = m.n_fac";
q +=
" inner join article a on a.code_art = m.CODE_ART where m.TRANS_TYPE = 'FA'";
q +=
" and f.Y_FAC = '" +
Y_FAC +
"' and f.N_FAC = '" +
N_FAC +
"' group by m.CODE_ART,m.NB_CAISS,a.a_code,a.DESC_ART";
console.log("query get in details ", q);
//const invoicesDet = await pool.query(q);
const invoicesDet = await DB.query(q);
return invoicesDet.recordsets;
} catch (err) {
console.log("error get inv det " + err.message);
}
finally {
DB.close();
}
};
这就是我如何进行 api 调用
router.route('/InvoicesFAC/:Y_FAC/:N_FAC').get((req,res)=>{
const Y_FAC = req.params.Y_FAC;
const N_FAC = req.params.N_FAC;
dboperations.getInvoicesFACS(req,res,Y_FAC,N_FAC).then(result => {
res.json(result);
})
})
【问题讨论】:
-
trustedconnection: true加上用户名没有意义,因为受信任的连接将使用 Kerberos SSO 进行连接,它使用已登录的用户。此外,您正在注入值,这使您对 SQL 注入持开放态度。您可能会发现多行字符串更易于阅读
标签: javascript sql node.js sql-server express