尝试显示数据时,res.json()将无法工作

时间:2014-01-17 03:26:24

标签: express

我正在使用Nodejs,express和postgresql来创建一个rest api。这是我第一次做这个,所以我为noobness道歉。我一直在测试这个,似乎是要在本地从数据库中获取信息,但是当我尝试使用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);
});

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

1 个答案:

答案 0 :(得分:0)

这是一个异步函数,所以它会像这样:

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)。