0
我有一個express
API,其POST請求包含使用mssql的SQL查詢。這是工作,並返回作爲JSON的結果。這個問題我有,當我要調用一次,而其他查詢仍在運行這更..nodejs - 使用mssql運行多個查詢
這裏是我的代碼:
app.post('/select', (req, res) => {
config.database = req.body.db;
var sqlQuery = `SELECT ${req.body.select} FROM ${req.body.from}`;
if (req.body.where !== '' && req.body.where !== undefined) sqlQuery += ` WHERE ${req.body.where}`;
if (req.body.order !== '' && req.body.order !== undefined) sqlQuery += ` ORDER BY ${req.body.order}`;
console.log(`Query: ${sqlQuery}`);
sql.connect(config).then(pool => {
return pool.request().query(sqlQuery)
}).then(result => {
sql.close();
sqlDone = true;
console.dir(result);
res.header('Content-Type', 'Application/JSON');
res.json(result.recordset);
}).catch(err => {
sql.close();
sqlDone = true;
console.log('Caught Error:');
console.log(err);
});
sql.on('error', err => {
sql.close();
console.log('SQL Request Error:');
console.log(err);
});
});
我得到的,當我把這個從錯誤中我react
Web應用程序與superagent
是:
Error: Global connection already exists. Call sql.close() first.
這是刺激性的,因爲我有同步調用我的API,然後等待第一個查詢返回,這樣我纔可以撥打下一個..
有誰知道如何一次運行多個查詢?這將不得不是一個單獨的連接,因爲我正在一個數據庫然後另一個運行查詢。雖然是同一臺服務
你正在使用哪個sql模塊?它有像isOpen這樣的方法嗎?在調用連接之前,您需要測試連接是否已經打開。 – SPlatten
這是︰https://www.npmjs.com/package/mssql – Timmo
我看不到這樣的方法,但你可以在你的連接例程中創建一個布爾變量設置標誌,當它已被調用,然後測試這個再次打電話之前。 – SPlatten