Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Express res.json()在尝试显示数据时不起作用_Express - Fatal编程技术网

Express res.json()在尝试显示数据时不起作用

Express res.json()在尝试显示数据时不起作用,express,Express,我正在使用Nodejs、express和postgresql创建restapi。这是我第一次这样做,所以我为此事道歉。我刚刚对此进行了测试,似乎要从本地数据库获取信息,但当我尝试使用res.json发送数据时,什么都没有显示。这是我到目前为止的代码 var express = require('express'); var client = new pg.Client({user: 'xxx', password: 'xxx', database: 'xxx', host: 'xxx'});

我正在使用Nodejs、express和postgresql创建restapi。这是我第一次这样做,所以我为此事道歉。我刚刚对此进行了测试,似乎要从本地数据库获取信息,但当我尝试使用res.json发送数据时,什么都没有显示。这是我到目前为止的代码

var express = require('express');

var client = new pg.Client({user: 'xxx', password: 'xxx', database: 'xxx', host: 'xxx'});

var app = express();

app.get('/test1', function(req,res){
   var name;
   client.connect(function(err){
       if(err){
          return console.error('could not connect to postgres', err);
       }
       client.query("select classname from class", function(err, result){
           if(err){
               return console.error('error running query', err);
           }
           name = result.rows[0].classname;
           console.log(name);
           client.end();
    });
    });
    res.send(name);
});

我使用了控制台日志,它打印出了我需要的内容,但由于一些奇怪的原因,它不会发送。谢谢你的帮助!此外,如果你看到其他错误,不要害怕说出来。谢谢

这是一个异步函数,因此它将如下所示:

var express = require('express');

var client = new pg.Client({
  user: 'xxx',
  password: 'xxx',
  database: 'xxx',
  host: 'xxx'
});

var app = express();

app.get('/test1', function(req, res) {
  var name;
  client.connect(function(err) {
    if (err) {
      return console.error('could not connect to postgres', err);
    }
    client.query("select classname from class", function(err, result) {
      if (err) {
        return console.error('error running query', err);
      }
      name = result.rows[0].classname;
      console.log(name);
      client.end();
      res.send(name);
    });
  });

});
代码中发生的情况是,在执行查询之前发送。您可以在控制台上看到它,因为您的日志语句在查询后正确执行


此外,您还应该注意您的错误-因此,不要返回res.send或res.json,而是执行另一个带有错误消息的res.send或res.json。

非常感谢@亚述