Je souhaites créer une API REST pour récupérer des données de ma base SQL Server.
Mais quand j'effectue une requête via curl () ou Postman, une erreur me dit que je n'ai pas de connexion spécifié pour ma requête....
Voici mon code :
//Le service SQL Server Browser doit être démarré
//npm i express, mssql, body-parser
var express = require('express'); // Web Framework
var app = express();
var sql = require('mssql'); // MS Sql Server client
// Connection string parameters.
var sqlConfig = {
user: 'sa',
password: '****',
server: 'INEO-DEV',
port: "1433",
database: 'RCO_Tracabilite'
}
// Start server and listen on http://localhost:8081/
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("app listening at http://%s:%s for database : %s", host, port, sqlConfig.database)
});
app.get('/changeFormat', function (req, res) {
sql.connect(sqlConfig, function() {
var request = new sql.Request();
request.query('SELECT * FROM CHANGE_FORMAT', function(err, recordset) {
if(err) console.log(err);
res.end(JSON.stringify(recordset)); // Result in JSON format
});
});
})
Voici l'erreur :
RequestError: No connection is specified for that request.
at Request._query (C:\Users\Administrateur\Desktop\node_modules\mssql\lib\base\request.js:491:37)
at Request._query (C:\Users\Administrateur\Desktop\node_modules\mssql\lib\tedious\request.js:353:11)
at Request.query (C:\Users\Administrateur\Desktop\node_modules\mssql\lib\base\request.js:427:12)
at C:\Users\Administrateur\Desktop\server.js:29:17
at Immediate.<anonymous> (C:\Users\Administrateur\Desktop\node_modules\mssql\lib\global-connection.js:56:7)
at processImmediate (internal/timers.js:466:21) {
code: 'ENOCONN'
Une partie de la documentation sur l'utilisation de mssql avec les callabacks indique que le premier paramètre et un status d'erreur
Peut être tu devrait vérifié si la connexion à réussi avant de faire la requête et si il y à une erreur affiché cette erreur peut donné plus d'information sur la nature de l'erreur. Actuellement le code erreur que tu as ces ENOCONN
qui j'imagine veut dire ERROR NO CONNECTION mais qui reste quand même flou sur la nature réel de l'erreur.
La même documentation à une partie errors qui indique que les erreurs fournissent trois informations principale qui sont:
error.code
error.name
error.message
Ainsi que d'autre informations plus secondaire comme:
err.number - The error number.
err.state - The error state, used as a modifier to the number.
err.class - The class (severity) of the error. A class of less than 10 indicates an informational message. Detailed explanation can be found here.
err.lineNumber - The line number in the SQL batch or stored procedure that caused the error. Line numbers begin at 1; therefore, if the line number is not applicable to the message, the value of LineNumber will be 0.
err.serverName - The server name.
err.procName - The stored procedure name.
Ce code doit donné un message d'erreur plus précis:
app.get('/changeFormat', function (req, res) {
sql.connect(sqlConfig, function(error) {
if(!error) {
// la connection n'a pas de status d'erreur
var request = new sql.Request();
request.query('SELECT * FROM CHANGE_FORMAT', function(err, recordset) {
if(err) console.log(err);
res.end(JSON.stringify(recordset)); // Result in JSON format
});
} else {
// la connection à un status d'erreur
console.error(`MSSQL error: ${error.name}: ${error.code} => ${error.message}`);
throw new Error(error);
}
});
});
A noté que dans la configuration la propriété serveur et l'hôte sur le quel la requête de connexion doit être envoyé par mssql
Si tu travaille en local l'hôte devrait normalement être localhost où 127.0.0.1.
Pour posté un problème relatif au base de données sur un forum tu n'as pas besoin de montré tes identifiants de connexion si tu les remplacé par des fictif où que tu travaille en local c'est bien mais ce n'est pas nécessaire de les montré quand même, tu peut les remplacé par des *** la prochaine fois.
- Edité par SamuelGaborieau3 20 juin 2021 à 6:12:25
En effet, je n'avais pas fait attention au mot de passe ! Par sécurité, peux-tu éditer ton message pour masquer le mot de passe stp ?
Merci d'avance,
Problème pour créer une API REST
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
suggestion de présentation.