2013-09-26 5 views
0

Я пытаюсь изменить запрос на моей стороне сервера (Node.js), который выглядит следующим образом:переменных запросов в node.js

var http = require('http'); 
var query = "SELECT * FROM Users WHERE Email='[email protected]'"; 

Это жёстко запрос. Я пытаюсь сделать что-то вроде этого (электронная почта является переменной тянут в от текстовой области ввода в HTML-документ):

var http = require('http'); 
var query = "SELECT * FROM Users WHERE Email=" + "'" + email + "'"; 

Я использую JQuery, чтобы обработать запрос, как это из файла JavaScript:

$.ajax({ 
     url: "http://127.0.0.1:8000/", 
     type: "POST", 
     success: function(dataRcvd) { 
      alert(dataRcvd); 
     } 

Если я понять, как это сделать, я могу динамически обновлять var query с различными запросов SQL/хранимых процедур.

+1

Данные на сервере не передаются. – undefined

+0

Как отправить данные на сервер? Я попытался добавить 'data: email' внутри вызова .ajax, но не был уверен, как ссылаться на него на стороне сервера. – gjw80

+0

Ну, в этом случае вы не определяете никаких идентификаторов, 'data: {email: 'value'}'. Теперь вы можете прочитать параметр в своем обработчике, http://nodejs.org/api/http.html – undefined

ответ

0
// server.js 
var http = require('http'); 
function handler(req, res){ 
    console.log('Server got '+req.body.email); 
    var query = "SELECT * FROM Users WHERE Email=" + "'" + req.body.email + "'"; 
    someAsyncSQLCall(query, function(rows){ 
    res.send(200, rows); 
    }); 
}; 

http.createServer(handler).listen(3000); 

//client.js 
$.ajax({ 
     url: "http://127.0.0.1:8000/", 
     type: "POST", 
     data: {email: 'value' }, 
     success: function(dataRcvd) { 
      alert(dataRcvd); 
     } 
0

Это невероятно плохая идея (конкатенация строк); любой может опубликовать атаку SQL-инъекций в вашей форме и отбросить вашу базу данных или сделать любое количество других гнусных вещей.

Я не уверен, какую БД вы используете, но у большинства из них есть способ выполнения параметризованных запросов, которые дезинфицируют вас от подобных атак.

Checkout node-postgres (pg module), в котором есть примеры того, как это сделать, если вы используете PostgreSQL.

Смежные вопросы