ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2014-04-10 MongoDB - pool
    DB/Nosql 2014. 4. 10. 18:24
    반응형



     * mongodb 게시판, pool connect 방식 적용


     * 개발 TIP

     - 클라이언트가 데이터값 잘 넘길거라고 생각하면 안 됨. => 나까지 의심하랏

     - TRY CATCH / ERR 항상 잡아줘야 함. => 클라이언트의 어떤 요청이라도 죽지 않는 서버!!가 최고

     - <HTML> => 클라이언트 사이드


     * 콜백함수

     - javascript라 함수를 넘길 수 있음.

     - 함수 호출 하고 나중에 콜백함수 호출 


    function asd (c, function(){}){ console.log(c); };

    function def(a, callback){console.log(a); callback('bye');}

    def('hi', asd);

    => hi bye




     - dbpool.js

    exports.write = function(data, callback){

    pool.acquire(function(err, conn) {

    if(err) console.error('err', err);

    conn.query('insert into board(writer, title, content, pwd, hit, regdate) values(?,?,?,?,0,now())', data, function(err, result) {

    callback(err, result);

    });

    pool.release(conn);

    });

    }


     - index.js

    exports.write = function(req, res){

    var writer = req.body.writer;

    var pwd = req.body.pwd;

    var title = req.body.title;

    var content = req.body.content;

    var data = [writer, title, content, pwd];

    pool.write(data, function(err, result){

    });

    .

    .

    .

    };


     => pool.write 실행 -> pool.acquire 의 callback 에 익명함수 저장 됨 -> insert 까지 실행 후 callback 실행 -> 


    ------------------------------------------------------------------- dbpool.js

     * db test 가능


    var generic_pool = require('generic-pool');

    var mysql = require('mysql');


    var pool = generic_pool.Pool({

    name: 'mysql',

    create: function(callback) {

    var config = {

    host: 'localhost',

    port: '3306',

    user: 'root',

    password: '1234',

    database: 'test'

    };

    var client = mysql.createConnection(config);

    client.connect(function(err) {

    if(err) console.error('err', err);

    callback(err, client);

    });

    }, // create func

    destroy: function(client) {

    client.end();

    },

    min: 2,

    max: 5,

    idleTimeoutMillis: 300000, // 5분동안 접속유지

    log: true

    }); // pool


    process.on('exit', function() {

    pool.drain(function() {

    pool.destroyAllNow();

    });

    });


    exports.write = function(data, callback){

    pool.acquire(function(err, conn) {

    if(err) console.error('err', err);

    conn.query('insert into board(writer, title, content, pwd, hit, regdate) values(?,?,?,?,0,now())', data, function(err, result) {

    callback(err, result);

    });

    pool.release(conn);

    });

    }



    반응형

    'DB > Nosql' 카테고리의 다른 글

    Centos에 Mongodb 설치  (0) 2014.04.28
    20140409 MongoDB  (0) 2014.04.09
Designed by Tistory.