2015-06-02 14 views
0

Я получаю эту ошибку всякий раз, когда выполняется этот API. Я новичок в node.js, и я действительно потерялся. Кто-то может помочь мне увидеть, что я делаю неправильно?Node.js: throw new Error («Невозможно установить заголовки после их отправки»);

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) .send («Несанкционированный»); ' –

ответ

0

Проблема заключается в том, что вы не можете совершать звонки в res.send несколько раз. Он заканчивает ответ, когда вы это делаете. Если вам нужно отправить больше данных клиенту, тогда создайте объект данных (var data = {}) и добавьте все, что вам нужно. Затем позвоните res.status(statusCode).send(data) внизу, когда все будет готово.

Смежные вопросы