node.js - nodejs、pgSQL 和异步查询

标签 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();

我在 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/

相关文章:

python - Flask-SQLAlchemy db.session.query(Model) 与 Model.query

javascript - 无法获取/错误,

database - 在PostgreSQL中联接两个表,其中一个内容为Array字段,另一个为该数组的主表

node.js - 在 Heroku 上构建 Angular 4 应用程序时,不包括 Assets

node.js - 在基于 Angular 6 的项目中更新 npm 时出现错误

visual-studio-2005 - 在 Visual Studio 2005 中执行的 Postgres 查询没有输出

indexing - postgresql 索引使用 - 优点和缺点

sql - 连续重复/重复的有序计数

node.js - 沃森发现 : Example using query options in node. js

node.js - Angular 5 在 protected 路由中设置授权 header