express
APIを使用して、mssqlを使用してSQLクエリを含むPOSTリクエストがあります。これは動作しており、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);
});
});
私は私からこれを呼び出すときに私が取得エラー:私は、他のクエリはまだここ..
を実行している間、何度もこの多くを呼び出したいときに私が持っている問題は、私のコードですsuperagent
とreact
Webアプリケーションは、次のとおりです。
Error: Global connection already exists. Call sql.close() first.
私は同期私のAPIを呼び出すと、最初のクエリが返すようにするために、私は次のいずれかを呼び出すことができます前に、待たなければならないので、これは刺激性..です
一度に複数のクエリを実行する方法を知っている人はいますか?これは別の接続でなければなりません。なぜなら、私は1つのデータベースに対してクエリを実行しているからです。しかし、同じサーバー。
どのsqlモジュールを使用していますか? isOpenのようなメソッドがありますか? connectを呼び出す前に接続がすでに開いているかどうかをテストする必要があります。 – SPlatten
これは次のとおりです:https://www.npmjs.com/package/mssql – Timmo
私はそのようなメソッドを見ることはできませんが、コールされたときにフラグを設定してこれをテストするために、あなたの接続ルーチンにブール変数を作成することができますもう一度電話する前に。 – SPlatten