我是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
:/所以我的结果是空的,然后填充:(我该怎么办?
谢谢你的时间!
答案 0 :(得分:0)
看看承诺:https://github.com/promises-aplus/promises-spec。 (nodejs的一个优秀的lib是q - http://documentup.com/kriskowal/q/).they对于保持nodejs代码的连贯性和整齐性非常有用。对于每个nodejs开发者来说,这都是必须的。