Skip to content

Instantly share code, notes, and snippets.

@Globik
Created October 21, 2016 16:20
Show Gist options
  • Save Globik/5c6d2758404e88a0adef11144db2be5f to your computer and use it in GitHub Desktop.
Save Globik/5c6d2758404e88a0adef11144db2be5f to your computer and use it in GitHub Desktop.

Revisions

  1. Globik created this gist Oct 21, 2016.
    71 changes: 71 additions & 0 deletions server.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,71 @@
    'use strict';
    const koa=require('koa');
    const render=require('./libs/render.js');
    const path=require('path');
    var debug=module.exports=require('debug')('icon')
    debug('Hali halo debug!');
    var serve=require('koa-static');

    var bodyParser=require('koa-body');
    var Router=require('koa-router');
    var pg=require('pg');

    var config={
    database:'globi',
    host:'127.0.0.1',
    port:5432,
    max:10,
    idleTimeout:30000,
    user:'User'
    };

    var pool=new pg.Pool(config);
    pool.on('error',function(err,client){
    console.log(err.message,err.stack);
    });

    pool.on('connect',cl=>{
    console.log('Connected!!!');
    });
    pool.on('acquire',cl=>{
    console.log('Acquired!!!');
    });
    var app=koa();
    render(app,{});
    app.use(serve(__dirname+'/public'));
    app.use(bodyParser());
    var pub=new Router();
    pub.get('/',function *(){
    //var client=yield pool.connect();
    /*
    // 10 times requests from the browser side and the postgresQL connection is down
    //(if without client.release()
    try{
    var result=yield client.query('select*from comp');
    console.log('result: ',result.rows[0].age);
    }catch(e){console.log('err: ',e);this.body={'er':e};
    client.release();
    }
    finally{
    console.log('finally ist da');
    client.release();
    this.body=this.render('main_page',{data:result.rows});
    }
    */
    try{
    // and this way is all ok. One connection to DB, and many other aqcuired events
    //thinking, the Pool instance has got all needed stuff built-in for a node.js request and requests
    var result=yield pool.query('select*from articles where id=4');
    console.log('result: ',result.rows[0]);
    }catch(e){
    console.log('e: ',e);
    //this.status=bla-bla and other stuff
    }
    finally{
    this.body=this.render('main_page',{data:result.rows[0]});
    }
    });
    app.use(pub.routes());

    if(process.env.NODE_ENV === 'test'){module.exports=app.callback();}
    else{console.log('Server started: ',3000);app.listen(process.env.PORT || 3000);}