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