我正在使用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);
});
我使用了控制台日志,它打印出我需要的东西,但由于一些奇怪的原因它不会发送。谢谢您的帮助!此外,如果你看到其他任何错误,不要害怕说出来。谢谢!
答案 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)。