2012-05-11 24 views
8

Saklı yordamları destekleyen düğümler için bir mySQL sürücüsü arıyorum.nodejs'de saklı yordamları destekleyen mysql için bir sürücü var mı?

DELIMITER // 
CREATE PROCEDURE test1p1() 
    BEGIN 
    SELECT 1+1; 
    END // 
DELIMITER ; 

node.js: Ben kullanıyorum http://nodejsdb.org/db-mysql/ hatayı belirli bir bağlamda o nodejs-mysql-native

saklı yordam çalışır

+0

Lütfen kodunuzu gösterin. – eggyal

+0

Burada bir örnek http://pastebin.com/8sh1vXrP – abinop

+1

Bu modülü çatlatamazsanız, her zaman birkaç seçeneğiniz vardır, https://github.com/joyent/node/wiki/ adresini ziyaret edin. modüller # wiki-db-mysql – Futur

cevap

4

ayarlanan bir sonuç döndüremez

USULÜ verir komut dosyası:

mysql = require('mysql-native'); 
var db = mysql.createTCPClient(); 
    db.auth('test', 'tester', ''); // db, user, password 

db.query('call test.test1p1;').on('row', function(r) { 
    console.log(r); 
}).on('end', function() { 
    console.log('OK!'); 
}); 

çıkış:

{ '1+1': 2 } 
OK! 
11

Felix Geisendorfer en node-mysql destekler prosedürleri saklanan ama onunla çıkacağını bir SELECT sorgu olarak bunu daha sonra, bir başarı/başarısızlık bayrağını ing SELECT tarafından saklı yordam sona sorgulamak gerekir. İşte saklı yordamı görünebilir nasıl:

DELIMITER // 
DROP PROCEDURE IF EXISTS MyProcedure // 
CREATE PROCEDURE MyProcedure(IN param1 VARCHAR/*, My, Parameters, ... */) 
BEGIN 

    DECLARE EXIT HANDLER FOR NOT FOUND, SQLWARNING, SQLEXCEPTION SELECT 0 AS res; 
    # My Queries etc. ... 

    SELECT 1 AS res; 

END // 
DELIMITER ; 

Sizin Düğüm kodu şöyle görünecektir: saklı yordam ve parametre ile çok basit sadece aramak için saklı yordam ile

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 ... 

    } 
}); 
+1

Parametre değerlerinin bu dizgi birleşimiyle dalga geçmelisiniz. SQL Injection ister misiniz? SQL Injection nasıl elde ederiz. – moron4hire

+1

belki de örnek nasıl düzgün bir şekilde kaçacağını göstermek için güncellenmelidir, örn. https://www.npmjs.com/package/mysql#escaping-query-values ​​ – kurttheviking

+1

+ client.escape (myParams) + 'ı kullanarak kolayca kaçabilirsiniz – user3564573

3

node-mysql sürücü çalışması.

CREATE PROCEDURE GetAllStudent(id int) 
BEGIN 
SELECT * FROM student where userid = id ; 
END; 

ve düğümünde

sadece bu şekilde sql enjeksiyon endişelenmeye gerek

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(); 
}); 

diyoruz.

here

şeyiyle birlikte

saklı yordam birden çözümler koymak iyi nodejs üzerine öğretici ve mysql

0

geçerli:

CREATE PROCEDURE GetStudent(id int) 
BEGIN 
SELECT * FROM student where userid = id ; 
END; 

node.js ve Ekspres kodu:

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'); 
}); 

(Kaynak kredisi: Pushker Yadav ve "http://www.javascriptpoint.com/nodejs-mysql-tutorial-example/ ")

İlgili konular