Я начал использовать NodeJS около месяца назад. Так как у меня не так много опыта, код работает не всегда так, как хотелось бы. В некотором роде я не могу подключиться к моему PostgreSQL с пакетом pg
узла. (Хорошо знать, что это работает, когда я подключить через PDO в PHP)подключение к PostgreSQL из NodeJS не работает
Я сделал это (простой) маршрут/контроллер
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.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);