2016-08-04 113 views
0

我已經在一個月前開始使用NodeJS。由於我沒有那麼多經驗,所以運行代碼並不總是像想要的那樣。在某些方面,我無法通過節點的pg包連接到我的PostgreSQL。 (當我通過PDO在PHP連接好知道它的工作原理)從NodeJS連接到PostgreSQL不起作用

我做這個(簡單的)路線/控制器

var pg = require('pg'); 
var config = require('../config'); 

module.exports = function(app) { 

app.get('/db-get-formules', function(req, res) { 

    var results = []; 

    var pgClient = new pg.Client(config.getDbConnectionString()); 

    pgClient.connect(); 

    pgClient.query('SELECT * FROM formules ORDER BY formule_id'); 

    pgClient.on('row', function(row) { 
     results.push(row); 
    }) 

    pgClient.on('end', function() { 
     done(); 
     console.log(results); 
     res.json(results); 
    }) 

}); 

}; 

這是在我的配置文件index.js:

var configValues = require('./config'); 

module.exports = { 

getDbConnectionString: function() { 
    return 'postgres://' + configValues.uname + ':' + configValues.password + '@' + configValues.host + ':' + configValues.port + '/' + configValues.database; 
} 

}

在同config文件夾我有一個包含config.json文件中的所有參數的連接

{ 
    "uname": "username", 
    "database": "myDb", 
    "host": "localhost", 
    "password": "[email protected]", 
    "port": "5432", 
    "idleTimeoutMillis": "30000" 
} 

如果我運行這個/db-get-formules頁面,頁面會一直加載(旋轉)並且什麼也沒有發生。我究竟做錯了什麼?

哦,只是爲你提供我的完整代碼,我有一個server.js文件中的根

var express = require('express'); 
var app = express(); 
var queryFormules = require('./controllers/queryFormules'); 

var port = process.env.PORT || 3000; 

app.use('/app', express.static(__dirname + '/public/app')); 
app.use('/server', express.static(__dirname + '/public/server')); 

queryFormules(app); 

// application ------------------------------------------------------------- 
app.get('/', function(req, res) { 
    res.sendFile(__dirname + '/public/index.html'); // load the single view file (angular will handle the page changes on the front-end) 
}); 

app.listen(port); 

回答

0

我沒有看到任何其他的答案,我不知道這是否會幫助,但這裏是我如何得到它的工作:

config.js

var pg = require('pg'); 
exports.conString = "pg://user:[email protected]_address:5432/db_name"; 

helper.js

var pg = require("pg"); 
var config = require('../config/config'); 

exports.runQuery= function(query, next) { 
    pg.connect(config.conString, function(err, client) { 
     if (err) { 
      var e = { 
       error: true, 
       message: "Unable to connect to database", 
       err: err, 
      }; 
      return next(e); 
     } 

     client.query(query, function(err, result) { 
      //deal with the result 
      client.end(); 
      return next(some_data_or_value); 
     }); 
    }); 
} 

然後你就可以在任何地方撥打runQuery着,當然你需要處理的函數結果/可能出現的錯誤,以及。

一些其他的文件或功能

var helpers = require('../services/helpers'); 

var query = "SELECT * FROM formules ORDER BY formule_id" 
helpers.runQuery(query, function(result) { 
    //deal with results 
});