nodejs,pgSQL和Async查询

时间:2014-07-05 06:10:10

标签: node.js postgresql

我是nodejs的新手,我正在尝试从我的PG服务器获取一些数据。我设法得到我的数据,但不按我预期的顺序。我可能不会以正确的方式使用它,任何人都可以帮忙吗?

以下是代码示例:

var pg = require('pg');

var db = new pg.Client(conString);
var link = db.connect();

var data = {};

// -----
console.log(prefix+'Fetching categories');
db.query('SELECT DISTINCT category FROM cc WHERE category IS NOT NULL', function(err, data){
    data.rows.forEach(function(row){
        data[row.category] = {}; // initialise
    });
console.log('1111111',data,'---------');
});
console.log('2222222',data,'---------');

for (var category in data)
{
    console.log(prefix+'Listing values for on "'+category+'"');
    var values = db.query('SELECT SUBSTRING(date::varchar, 1,7) AS month, sum(amount) FROM cc WHERE category = \''+category+'\' GROUP BY 1 ORDER BY 1', function(err, data){
        console.log('Got values',data.rows);
    });
}

// -----
console.log(prefix+'Ending connection to database');
//  db.end();

// -----
console.log(prefix+'Ending transaction on server side');
response.end();

我得到222222 before 1111111:/所以我的结果是空的,然后填充:(我该怎么办?

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

看看承诺:https://github.com/promises-aplus/promises-spec。 (nodejs的一个优秀的lib是q - http://documentup.com/kriskowal/q/).they对于保持nodejs代码的连贯性和整齐性非常有用。对于每个nodejs开发者来说,这都是必须的。