我大约一个月前开始使用NodeJS。由于我没有那么多运行代码的经验并不总是如愿。在某种程度上,我无法使用节点的pg
包连接到我的PostgreSQL。 (很高兴知道当我通过PHP中的PDO连接时它可以工作)
我制作了这个(简单)路线/控制器
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": "P@ssw0rd",
"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 :(得分:0)
我没有看到任何其他答案,我不确定这是否会有所帮助,但以下是我如何使用它:
<强> config.js 强>
var pg = require('pg');
exports.conString = "pg://user:password@db_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
});