【发布时间】:2015-08-16 08:32:38
【问题描述】:
每当执行此 get API 时,我都会收到此错误。我是 node.js 的新手,我真的迷路了,有人可以帮我看看我做错了什么吗?
app.get('/quote/:id', function(req, res) {
var results = [];
var userToken = [];
client1 = new pg.Client(connectionString);
client1.connect();
var query1 = client1.query('SELECT * FROM users WHERE access_token = $1', [req.body.access_token]);
query1.on('row', function(row){userToken.push(row);});
query1.on('end', function(result) {
client1.end();
if(userToken.length<1){
res.status(401).send("Unauthorized");
}
});
client2 = new pg.Client(connectionString);
client2.connect();
var query2 = client2.query('SELECT * FROM quotes WHERE quote_id = $1', [req.params.id]);
query2.on('row', function(row){results.push(row);});
query2.on('end', function(result) {
client2.end();
if(results.length<1){
return res.status(404).send({"error":"NOT FOUND"});
}
return res.status(200).send(JSON.stringify(results));
});
});
【问题讨论】:
-
你说你不断收到错误,你得到的确切错误是什么?
-
can't set headers after they are sent.没错,你不能。在发送响应之前先设置标题。找到执行此操作的相关代码并进行更正。 -
我认为你应该把
return放在这之前:res.status(401).send("Unauthorized"); -
在网络浏览器上我收到此错误“加载资源失败:服务器响应状态为 401(未授权)”但问题是我用于登录的密码正确且我得到的令牌与保存在数据库中的令牌相同。当我在终端上运行 heroku 日志时,我收到此错误“错误:发送后无法设置标题。”
-
@AndreyPopov 我已经更正了它,但我仍然得到同样的错误.. Abhinav 它没有说明错误来自哪一行
标签: node.js postgresql restful-authentication