11

从 node-postgres 中的 SELECT 查询返回结果时遇到问题。现在行在代码块的末尾是空的。此选择仅从 POSTGRESQL 中的序列返回下一个值。我知道您无法从回调中检索结果,但是这里是否有人使用过 node-postgres(或任何其他数据库模块到节点)可能知道修复?

client.connect();
var query = client.query("SELECT nextval(\'idgenerator\');");
var rows = [];
query.on('row', function(row, res) {
    rows.push(row);
});
query.on('end', function(result) {
    console.log(result.rowCount + ' rows were received');
});
//client.end();
console.log(rows);
4

2 回答 2

7

您必须学习 javascript / nodejs 和事件编程。

query.on('row', function() { /*CODE*/ })意思是:“当一行被读取时,执行代码”。

这是异步的;所以 query.on() 注册事件并返回。

So when console.log(rows)被调用时,rows 仍然是空的,因为查询时还没有触发 'row' 事件。

您应该尝试将 'console.log(rows)' 放在 query.on('end') 事件处理程序的主体中。

此外,在代码的任何地方,您都应该编写一些console.log. 你会看到异步的东西。

于 2013-07-03T08:04:44.987 回答
4

如果我们不调用 result.addRow() 方法,则 rows 数组在结束事件中将为空。

var query = client.query("SELECT firstname, lastname FROM emps ORDER BY lastname, firstname");

query.on("row", function (row, result) {
    result.addRow(row);
});

query.on("end", function (result) {
    console.log(JSON.stringify(result.rows, null, "    "));
    client.end();
});

参考: http: //nodeexamples.com/2012/09/21/connecting-to-a-postgresql-database-from-node-js-using-the-pg-module/

于 2016-01-18T13:29:09.750 回答