아고 벌써 새벅 1시 반이네요,,
언능 포스팅 하고 자야것습니다.
Node.js에서 express 모듈을 사용하는법은 뭐,,찾아보면 다 많이들 나옵니다.
간략하게 순서만 정리하면,
1. npm install -g express
2. express <project name>
3. cd <project name> --> 해당 폴더로 이동 후,
4. npm install
5. node app --> 서버 실행.
뭐..여기까지는 그다지 어렵지 않다..ㅎㅎ
기본적으로 프로젝트를 생성하면 아래와같이 app.js 파일이 생성된다.
** app.js **
/** * Module dependencies. */ var express = require('express') , routes = require('./routes'); var app = module.exports = express.createServer(); // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function(){ app.use(express.errorHandler()); }); // Routes app.get('/', routes.index); app.listen(3000); console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
여기에 내가 추가한것은 routes 방법을 index.js 파일하나에서 처리하는게 아니라 여러 파일에서 처리하도록 하는것이당.
routes 선언을 다음과 같이 해주면 된다.
var routes = { index: require('./routes').index, life : require('./routes/life.js').life } // Routes // 이제 이러면 각각 route별로 필요시 파일을 따로 만들 수 있다. app.get('/', routes.index); app.get('/life',routes.life);
그 다음으로, db에서 간단하게 목록 불러오기다..
따로 파일을 만들기 귀찮아서 Index 라우트에서 사용하는 index뷰에서 보려주는걸로 마무리..
/* * GET home page. */ var mysql = require('mysql'); var dbconn = mysql.createConnection( { host:'xxx.bbb.com', user:'aaaa', password:'1234', database:'MyDBName' }); exports.index = function(req, res){ dbconn.connect(); dbconn.query('SELECT * FROM xe_livexe_documents LIMIT 0 , 30', function(err, rows, fields) { if (err){ throw err; } res.render('index', { title: 'Inlinepark',myList:rows }); }); dbconn.end(); };
일단 정상적으로 목록은 나온다~~!
안나오면 알아서들 해결하시고,,
문제는 새로고침하면 요로코롬 에러가 뜬다..
Error: Cannot enqueue Handshake after invoking quit. at
Protocol._validateEnqueue
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\mysql\lib\protocol\Protocol.js:115:16)
at Protocol._enqueue
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\mysql\lib\protocol\Protocol.js:84:13)
at Protocol.handshake
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\mysql\lib\protocol\Protocol.js:37:41)
at Connection.connect
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\mysql\lib\Connection.js:37:18)
at exports.index
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\routes\index.js:15:9) at callbacks
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\express\lib\router\index.js:272:11)
at param
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\express\lib\router\index.js:246:11)
at pass
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\express\lib\router\index.js:253:5)
at Router._dispatch
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\express\lib\router\index.js:280:5)
at Object.middleware [as handle]
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\express\lib\router\index.js:45:10)
-------------------- at Handshake.Sequence
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\mysql\lib\protocol\sequences\Sequence.js:15:21)
at new Handshake
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\mysql\lib\protocol\sequences\Handshake.js:9:12)
at Protocol.handshake
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\mysql\lib\protocol\Protocol.js:37:50)
at Connection.connect
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\mysql\lib\Connection.js:37:18)
at exports.index
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\routes\index.js:15:9) at callbacks
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\express\lib\router\index.js:272:11)
at param
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\express\lib\router\index.js:246:11)
at pass
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\express\lib\router\index.js:253:5)
at Router._dispatch
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\express\lib\router\index.js:280:5)
at Object.middleware [as handle]
(D:\Workspaces\NodeJs_Chapter9\HelloExpress\node_modules\express\lib\router\index.js:45:10)
왜 그러한가 알아보니, node.js에서는 한번 끊어진 connection은 다시 사용할 수 없는기다~~!!
dbconn.end();
아까 내가 end함수를 호출했으니, 어찌보면 당연한거다..
일단 함 쭉~~ 훌터보면서 connection_pooling에 대해서 확인해봐야긋다..ㅎ
아..졸려..ㅠㅠ
'Programming > Javascript' 카테고리의 다른 글
[Angular JS] UI-Grid Filter To Get Parameter (0) | 2015.05.18 |
---|---|
Angular JS 동영상 강의 추천.. (0) | 2014.09.24 |
Node.js, Connect에서 Router?? 이넘 어디 갔나?? (0) | 2013.01.23 |
Node.js 책 구입~~ (0) | 2013.01.18 |
이전 포스트 다시보기 1탄 - JSON validator (0) | 2012.11.13 |