2015-06-02 63 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)

相關問題