2012-11-03 4 views
1

저는 node.js를 처음 사용합니다. 내가 일하고있는 프로젝트는 큰 배열 (625 개 항목)이 문자열로 MySQL 데이터베이스에 저장되어야하고이를 수행하기 위해 Node MySQL을 사용하고 있습니다.Node.js beginner- 쿼리 문자열없이 요청

지금 당장 "/ (열 이름)? (값)"요청이있을 때 행이 업데이트되도록했습니다. 불행히도 노드에 문자열로 625 개 항목을 전달하는 것이 일을하는 가장 효율적인 방법이 아니라는 것을 배우는 데 오랜 시간이 걸리지 않았습니다.

큰 배열을 쿼리 문자열 이외의 문자열로 전달하는 다른 방법에 대한 제안이 있습니까?

var http = require('http'), 
    mysql = require("mysql"), 
    url = require("url"), 
    express = require("express"); 

var connection = mysql.createConnection({ 
    user: "root", 
    database: "ballot" 

}); 

var app = express(); 
app.use(express.bodyParser()); 

app.options('/', function (request, response) 
{ 
    response.header("Access-Control-Allow-Origin", "*"); 
    response.end(); 
}); 

app.get('/', function (request, response) 
{ 
    connection.query("SELECT * FROM pathfind;", function (error, rows, fields) { 
     for(i=0;i<rows.length;i++) 
     { 
      response.send('<div id="layers">'+rows[i].layers+'</div> \ 
          <div   id="speed">'+rows[i].speed+'</div> \ 
          <div  id="direction">'+rows[i].direction+'</div>'); 
     } 
     response.end(); 
    }); 
}); 

app.post('/', function (request, response) 
{ 
    console.log(request.param('data', null)); 
    var urlData = url.parse(request.url, true); 
    if(urlData.pathname = '/layers') 
    { 
     col = "layers"; 
    } 
    else if(urlData.pathname = '/speed') 
    { 
     col = "speed"; 
    } 
else if(urlData.pathname = '/direction') 
    { 
     col = "direction"; 
    } 
    req.addListener("data", function(data) { 
     connection.query("UPDATE pathfind SET "+col+"="+data+" WHERE num=0",  function (error, rows, fields) { 
      if (error) 
      { 
       app.close(); 
      } 
     }); 
    }); 
}); 

app.listen(8080);** 

편집 : 이제 게시물을 사용해야합니다. express.js를 사용하여 위 코드를 다시 작성했습니다. 내가 온라인으로 보았던 대부분의 예제는 HTML 폼을 사용하여 게시물을 사용하지만, 괜찮 았지만 프로젝트는 AJAX 요청을 통해 데이터를 게시해야한다. 누군가 node.js에서 데이터가 어떻게 파싱되는지 보여 줄 수 있습니까?

+2

큰 볼륨은 최고, POST 요청을 통해 전송 특히 경우 DB에 수정에 해당 요청 결과, GET 요청은 그래서 분명히 내가했습니다 상태 –

+0

를 변경하지 않고 여러 번 실행하기위한 것입니다로 이것에 대해 잘못된 길을 가고 있습니다. 데이터를 데이터베이스에 게시하려면 어떻게합니까? 그건 그렇고, jQuery의 내장 아약스 라이브러리를 사용하고 있습니다. – Harangue

+0

''HTTP' 모듈 대신'Express'를 사용하면 bodyparser라고하는 멋진 미들웨어 조각이있어서 POST 요청 본문에 액세스 할 수 있습니다. 클라이언트 측에서는 표준'jQuery.post (url, data, callback) '를 사용하여 데이터를 게시합니다. –

답변

1

이렇게 게시물 데이터를 추출 할 수 있습니다. 데이터의

if (req.method == 'POST') { 
    var body = ''; 
    req.on('data', function (chunk) { 
     body += chunk; 
    }); 
    req.on('end', function() { 
     var postData = body.toString(); 
     console.log(postData); 
    }); 
}