Je recherche un pilote MySQL pour NODEJS qui prend en charge les procédures stockées. http://nodejsdb.org/db-mysql/ que j'ai utilisé donne donne l'erreur p>
Procédure ne peut pas renvoyer un ensemble de résultats dans le contexte donné P>
5 Réponses :
Il fonctionne dans Nodejs-mysql-natif
Procédure stockée: p> nœud.js script: p> sortie: p> { '1+1': 2 }
OK!
Felix Geisendörfer's Node-MySQL prend en charge les procédures stockées, mais vous devez mettre fin à votre stockage stocké. PROCÉDURE PAR Votre code de nœud ressemblerait à ceci comme suit: P> SELECT CODE> ING Un drapeau de réussite / Échec, puis la questionner comme vous le feriez un
Sélectionnez CODE> Query. Voici comment la procédure stockée pourrait regarder:
var mysql = require('mysql');
var client = mysql.createConnection({
host : '127.0.0.1',
user : 'username',
password: 'password'
});
client.query('USE mydatabase');
var myParams = "'param1', 'param2', ... ";
client.query("CALL MyProcedure(" + myParams + ")", function(err, results, fields) {
if (err || results[0].res === 0) {
throw new Error("My Error ... ");
} else {
// My Callback Stuff ...
}
});
Vous plaisantez avec cette concaténation de la chaîne de valeurs de paramètre. Voulez-vous une injection SQL? C'est ainsi que nous obtenons une injection SQL.
L'exemple devrait peut-être être mis à jour pour montrer comment s'échapper correctement, par exemple. NPMJS.com/package/mysql#escaping-query-values
Vous pouvez simplement échapper à + client.escape (myParams) +
Node-MySQL conducteur conducteur avec procédure stockée et son très simple Appelez votre procédure stockée avec le paramètre.
app.get('/sp', function (req, res, next) { connection.connect(); connection.query('CALL GetAllStudent(?)',[req.body.id],function (err, rows, fields) { if (err) { res.status(400).send(err); } res.status(200).send(rows); }); connection.end(); });
Mettre plusieurs solutions ensemble pour l'exhaustivité
Procédure stockée: P>
var express = require('express'); var mysql = require("mysql"); var app = express(); var pool = mysql.createPool({ connectionLimit: 100, host: 'localhost', user: 'root', password: '', database: 'demo' }); app.get('/pool', function (req, res) { var studentId = req.body.id; pool.getConnection(function (err, connection) { // connected! (unless `err` is set) if (err) { res.status(400).send(err); } connection.query('CALL GetStudent(?)',[studentId], function (err, rows, fields) { connection.release(); if (err) { res.status(400).send(err); } res.status(200).send(rows); }); }); }); app.listen(4000, function () { console.log('Server is running.. on Port 4000'); });
Bien que cela ait été répondu, je contribuerai avec ma propre version, espérons que cela vous aide et que quiconque qui trébuche sur ce post
Dans votre cas, c'est ainsi que je voudrais, dans un seul fichier, faire ( La voie de 2019, un peu ...) Ce que vous essayez d'atteindre (pas besoin de quelque chose d'autre, puis eXpress Cadre et le package MySQL par défaut qui utilise principalement tout le monde) P>
Premièrement, installez ces deux paquets: < / p>
second, créez une procédure stockée, comme: P> et enfin, créez un script JS, ouvrez-le et écrivez les lignes de code suivantes: p>
Voici un exemple Pastebin.com/8SH1VXRP
Vous avez toujours quelques options supplémentaires, si vous n'êtes pas en mesure de casser ce module, cochez GITUB.COM/JOYENT/NODE/WIKI/MODULES#WIKIDB-MYSQL