2015-06-02 60 views
0

无论何时执行get API,我都会收到此错误。我是新来的node.js,我真的迷失了,有人可以帮我看看我做错了什么?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)); 
}); 

}); 
+0

你说你不断收到错误,你得到了什么确切的错误? – Kmeixner

+0

'发送后无法设置标题。'确切地说,你不能。首先在发送响应之前设置标题。找到相关的代码来完成并更正它。 –

+0

我想这之前,你应该把'return':'res.status(401)。发送(“未授权”);' –

回答

0

问题是,您无法多次拨打res.send。当你这样做时,它会结束响应。如果您需要向客户端发送更多数据,请创建一个数据对象(var data = {})并将所需的所有内容添加到该对象中。当一切都完成后,请在底部拨打res.status(statusCode).send(data)

相关问题