我正在寻找一个节点js客户端连接到PostgreSQL 8.3并以同步阻塞模式运行我的查询(对于脚本而不是Web服务器)。
我目前正在使用https://github.com/brianc/node-postgres 哪个效果很好,但它只支持异步。
谢谢,
肖恩。
答案 0 :(得分:4)
您可以在系列模式下使用async以同步方式运行查询,并避免多次回调结构:Async.series
pg.connect(configDB.connectionString, function(err, client, done) {
if (err) { return console.error(err); }
var condition = true;
async.series([
CreateExtensions,
PushSQL,
function (next) {
if (condition) {
UpdateTable(id, name, next);
}
else {
next();
}
}
],
function(err, results) {
if (err) { console.error(err); }
client.end();
pg.end();
});
function CreateExtensions(callback) {
var queryConfig = 'CREATE EXTENSION postgis; CREATE EXTENSION hstore;';
client.query(queryConfig, function(err) {
return callback(err);
});
}
function PushSQL(callback) {
var queryConfig = fs.readFileSync("./database/cmdb.sql", 'utf8');
client.query(queryConfig, function(err) {
return callback(err);
});
}
function UpdateTable(id, name, callback) {
var queryConfig = "UPDATE table SET name = '" + name + "' WHERE id = " + id + ";";
client.query(queryConfig, function(err) {
condition = false;
return callback(err);
});
}
});