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*/ })意味:「行が読み取られたら、CODEを実行する」。

これは非同期です。そのため、query.on() はイベントを登録して戻ります。

So when console.log(rows)が呼び出されますが、クエリで「行」イベントがまだトリガーされていないため、行はまだ空です。

query.on('end') イベント ハンドラの本体に 'console.log(rows)' を入れてみてください。

また、コードのどこにでも、いくつかのconsole.log. 非同期のことがわかります。

于 2013-07-03T08:04:44.987 に答える