Node JS 에서 MySql 을 이용해서 작업하는데


DateTime 타입인 컬럼에 값이 '2010-10-10 20:20:00'  라고 입력이 되어 있는데


이 값을 꺼내서 쓸라고 보니까 'Wed, 04 Jul 2012 02:06:00 GMT'  요딴 식으로 튀어 나오네...젠장


분명히 시간이 틀려졌다...20시 20분인데 꺼내서 보니까 02:06 이다.


저거를 한국 시간으로 바꾸자



코드

var _date = new Date(new Date(resultList[i].meetTime).toLocaleString();)


이제 이 값을 아래 메소드로 빼 쓰면 된다.


getFullYear()


d.getMonth() + 1 // 달은 +1 을 해줘야 된다.


d.getDate()


d.getHours()


d.getMinutes()


d.getSeconds()


더 쉬운 방법을 아시는 분은 좀 가르쳐주세요 ㅎㅎ

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST



노드에서 EventEmitter 를 이용하여 이벤트 방식으로 


웹 서버에서 라우트하는 코드에서


디비작업을 하는 코드를 분리하여, 의존성을 제거하고 비동기 처리 방법.


express 를 사용하였습니다.



1. 서버 js

var express = require('express')

  , routes = require('./routes') // 기본 index.js

  , pp = require('./public/properties').properties

  , clog = require('clog');


var app = module.exports = express.createServer();


.............. 설정들



app.post('/searchArea.margo', routes.searchArea);



2. Route - index.js

var dao = require('./db'); // routes/db.js 

exports.searchArea = function(req, res){

var cb = dao.getArea(req.body);

cb.on('end', function(err, result){

if(err) throw err;

res.send(result);

});

};



3. DB - db.js
(MySql을 사용하였습니다.)

var db = require('mysql');


var DATABASE = '데이타베이스 명';

var MYSQL_USER = "root";

var MYSQL_PASS = "apmsetup"; 


var mysql = db.createClient({

host: '127.0.0.1'

, database : DATABASE

, user: MYSQL_USER

    , password: MYSQL_PASS

});


var EventEmitter = require('events').EventEmitter;


var dao = module.exports = {


getArea: function(param){

var evt = new EventEmitter();

mysql.query("SELECT * FROM address WHERE area3 like concat(?, '%')"

, [param.searchText]

, function(err, result, fields){


evt.emit('end', err, result);

});

return evt;

}

};



설명

3번 에서 EventEmitter 를 생성하여 디비쿼리를 실행시킨후에 evt 를 리턴한다. (쿼리는 아직 끝나지않았다. 쿼리를 실행만 시켜놓고 바로 evt를 리턴해버린다.)


2번 에서 cb 는 3번에서 리턴해준 evt 에 on 리스너를 달아서 아까 발생시킨 'end' 이벤트를 기다린다.


디비 쿼리 작업이 다끝나고 디비결과가 콜백메소드로 들어오면 'end'이벤트를 발생시킨다. res.send(result);


그러면 2번에서 'end'이벤트에 달았던 리스너가 동작하면서 리스너 콜백이 실행된다.


끝. 즐거운 NodeJS~~~~ 


참고 : 변정훈님이 지으신 NODE.JS 프로그래밍 - 에이콘 출판사

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. 로즈 2012.07.11 14:14 신고  댓글주소  수정/삭제  댓글쓰기

    와 감사합니다.. 도움이 많이 됬어요...

    코멘트 잘 안 다는데.. 너무 재밌게 잘보고 가게되서 몇자 적었네요.. ^^





NodeJS - express 프레임웍에서 템플릿 엔진(EJS)을 이용하여 View 페이지로 JSON 객체를 넘겨줄 때, 


값이 제대로 넘어 가지 않고, 


스크립트 에러가 나거나, 값이 [Object, Object] 형식으로 제대로 나오지 않는 경우가 있다.


스크립트 에러는 "Uncaught SyntaxError: Unexpected identifier" 이런식으로 나고, 


"[object Object],[object Object],[object Object],[object Object],[object Object]," 이런식으로 JSON이 제대로


전달 되지 않는다.


JSON 객체는 보통 스트링 넘기듯이 넘기면 안된다.




NodeJS - Server Page


res.render('search/bbsList',{ result: JSON.stringify(result)

, caller:req.body.caller});


DB나 어떤 JSON 객체를  넘겨줄 때는 저런식으로 JSON.stringify 로 넘겨주어야한다.




NodeJS - View Page(EJS)


템플릿 엔진 옵션은 

open: '#{',

   close: '}'


보통 값을 불러올때는 #{= xxx} 이런식으로 불러오지만


json객체를 저런식으로 부르면 


{"lastname": " 


위와같은 값이 나오게 된다.


JSON 객체를 불러올 때는 


var resultList = #{-result};


이렇게 '=' 이 아닌 '-' 로 호출해야한다. 끝.


YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. ㅜㅜ; 2012.10.28 17:11 신고  댓글주소  수정/삭제  댓글쓰기

    어제부터 json을 봐도 뭐가뭔지 짐작이안오네여 ㅠㅠ;; 혹시 node.js json에대한 소스예제는 없나요?

  2. 오호 2016.03.31 17:01 신고  댓글주소  수정/삭제  댓글쓰기

    도움이 많이 되었습니다! 근데 역으로 express 프레임웍에서 템플릿 엔진(EJS)을 이용하여 서버페이지에 json object를 넘겨줄땐 어찌 해야 할까요??