node.js Mondial de connexion existe déjà. Appel sql.close() de la première
Je suis en train de créer des services web à l'aide de node.js à partir d'une base de données sql server,dans le frontend quand j'appelle ces 2 webservices en même temps, il renvoie une erreur de connexion Global existe déjà. Appel sql.close() en premier .
Toute Solution ?
var express = require('express');
var router = express.Router();
var sql = require("mssql");
router.get('/Plant/:server/:user/:password/:database', function(req, res, next) {
user = req.params.user;
password = req.params.password;
server = req.params.server;
database = req.params.database;
//config for your database
var config = {
user: user,
password: password,
server: server,
database:database
};
sql.connect(config, function (err) {
//create Request object
var request = new sql.Request();
//query to the database and get the records
request.query("SELECT distinct PlantName FROM MachineryStateTable"
, function (err, recordset) {
if (err) console.log(err)
else {
for(i=0;i<recordset.recordsets.length;i++) {
res.send(recordset.recordsets[i])
}
}
sql.close();
});
});
});
router.get('/Dep/:server/:user/:password/:database/:plantname', function(req, res, next) {
user = req.params.user;
password = req.params.password;
server = req.params.server;
database = req.params.database;
plantname = req.params.plantname;
//config for your database
var config = {
user: user,
password: password,
server: server,
database:database
};
sql.connect(config, function (err) {
//create Request object
var request = new sql.Request();
//query to the database and get the records
request.query("SELECT distinct DepName FROM MachineryStateTable where PlantName= '"+plantname+"'"
, function (err, recordset) {
if (err) console.log(err)
else {
for(i=0;i<recordset.recordsets.length;i++) {
res.send(recordset.recordsets[i])
}
sql.close();
}
});
});
});
module.exports = router;
OriginalL'auteur Laamiri Oussema | 2017-06-25
Vous devez vous connecter pour publier un commentaire.
Vous devez créer un
poolConnection
essayez ceci:
Thx. Une belle. Devons-nous fermer la piscine? quelque chose comme la piscine.close(). Est-il possible de définir groupement de code une fois et l'utiliser dans de nombreux endroits?
Merci, Si j'utilise l' ---- const db_pool = new sql.ConnectionPool(db_config); dois-je appeler db_pool.close(); au lieu de sql.close();
OriginalL'auteur bams
De la la documentation, proche de la méthode doit être utilisée sur la connexion, et non pas sur le module obligatoire,
Et doit donc être utilisé comme
Également quelques suggestions,
1. mettre res.envoyer dans une boucle n'est pas une bonne idée, Vous pourriez répondre de nouveau l'ensemble des jeux d'enregistrements ou de faire des opérations dessus, le magasin qui en résulte dans une variable et l'envoyer en arrière.
2. Essayez d'utiliser promesses, au lieu de rappels, il serait de rendre la circulation plus lisible
Le lien ci-dessus de l'objet peuvent être fournis avec des informations d'identification de la provenance de la demande.
Pouvez-vous préciser comment avec un exemple?
OriginalL'auteur Shivam