我是 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();
我在 1111111 之前得到 222222
:/所以我的结果被发送为空,然后被填充:( 我该怎么办?
感谢您的宝贵时间!
最佳答案
看看 promise :https://github.com/promises-aplus/promises-spec . (一个很好的 nodejs 库是 q - http://documentup.com/kriskowal/q/).they 对于在所有这些回调中保持 nodejs 代码的连贯和整洁非常有用。每个 nodejs 开发人员都必须这样做。
关于node.js - nodejs、pgSQL 和异步查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24583556/