> Hello World !!!

     

@syaku

Node.js SQL Query 문을 XML로 관리하기


written by Seok Kyun. Choi. 최석균

"Node.js SQL Query 문을 XML로 관리하기"

자바스크립트에 SQL 쿼리문을 사용할때 한줄 이상인 경우 사용하기가 불편해진다.

그부분을 해소하기 위한 방법을 소개한다.


DBMS 는 MySQL 을 사용하였고, Node.js 프레임워크 Express 를 이용하여 개발하였다.

설치및 설명은 생략하고 소스만 설명하도록 한다. 소스는 어려운 부분이 없으므로 이해하기는 쉬울 것이다.


MySQL 모듈을 설치한다.

> npm i -g mysql 


XML 파서를 설치하자.

> npm i -g xml-digester 


xml-digester 모듈은 xml 결과를 json 으로 리턴해주며, 사용법도 간단하여 선택하게 되었다.


index.js 구동시키면 되고, 더 많은 쿼리문은 xml 에 노드 네임을 추가하면 되고 where 절을 구분을 주려면 노드를 좀더 세분화하면 될 것이다.




index.js 소스


var http = require('http'); var express = require('express'); var app = express(); app.use(app.router); http.createServer(app).listen(52271, function() { console.log('Start Server localhost:52271'); console.log(__filename); console.log(__dirname); }); var modules = require('./module.js'); app.get('/searchdata', modules._searchdata);



module.js 소스


var util = require('util');
var fs = require('fs');

var xml_digester = require("xml-digester");
var digester = xml_digester.XmlDigester({});
var mysql = require('mysql');

var db = mysql.createConnection({
  user : '계정', 
  password : '암호',
  database : '데이터베이스명'
});


fs.readFile(__dirname + '/query.xml','utf8', function(error, data) {
  if (error) { 
    console.log(error);
  } else {

    digester.digest(data, function(error, result) {
      if (error) { 
        console.log(error);
      } else {
        global.searchdata_query = result.query.searchdata;

      }
    });

  }

});

exports._searchdata = function(req , res) {
  var limit = req.param("limit");
  var service = req.param("service");
  var query = util.format( global.searchdata_query , service , limit );

  db.query(query, function (error, result, field) {
    
    if (error) {
      console.log("오류발생");
      res.writeHead(500);
      res.end();
    } else {
      res.json(result);
    }

  });
  
};


query.xml 소스


<?xml version="1.0" encoding="UTF-8" ?>
<query>
  <searchdata>
  SELECT * FROM SEARCH_DATA WHERE service = '%s' AND is_used = 'Y' ORDER BY listorder LIMIT %s
  </searchdata>
</query>







posted syaku blog

Syaku Blog by Seok Kyun. Choi. 최석균.

http://syaku.tistory.com