简体   繁体   English

无法在node.js中显示行数

[英]Cannot display row count in node.js

I am trying to run the following bit of code in node.js to display the number of tables in a postgresql database: 我正在尝试在node.js运行以下代码以显示postgresql数据库中的表数:

var pg = require('pg'); 
var conString = "postgres://login:pwd@localhost/DB";
var client = new pg.Client(conString);

client.connect(function(err) {
    if (err) {
        console.error('Could not connect to DB', err);
    } else {
        console.log('Could connect to DB');
        client.query("SELECT * FROM pg_catalog.pg_tables", function(err, result) {
            if (err) {
                console.error('Error with table query', err);
            } else {
                var cnt = result.rows.length;
                console.log("Row count: " + cnt.toString());
            }
        });
        console.log('After query');
        client.end();
    }
});

Unfortunately, only the following is displayed in the console: 不幸的是,控制台中仅显示以下内容:

Could connect to DB
After query

Why isn't the row count line displayed? 为什么不显示行计数行? How can I find out what the issue is? 我如何找出问题所在?

Since client.query is asynchronous, client.end() will be called before the query has a chance to return a result 由于client.query是异步的,因此将在查询有机会返回结果之前调用client.end()

Try moving client.end() inside of your async function to client.query. 尝试将异步函数内部的client.end()移至client.query。 Then it will only be called after result.rows has been logged to console, like so: 然后,仅在result.rows已记录到控制台之后才调用它,如下所示:

client.connect(function(err) {
    if (err) {
        console.error('Could not connect to DB', err);
    } else {
        console.log('Could connect to DB');
        client.query("SELECT * FROM pg_catalog.pg_tables", function(err, result) {
            if (err) {
                console.error('Error with table query', err);
            } else {
                var cnt = result.rows.length;
                console.log("Row count: " + cnt.toString);
                client.end();
                console.log('After query');
            }
        });
    }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM