2017-04-13 8 views
0

ためres.json:エクスプレス:私は次の操作を実行したいアレイ

{ 
    "sessionId": "9ff1c415-2dcc-4505-8414-4391967064bc", 
    "fileId": "510647c3-62fc-4412-b189-a6b872606f10", 
    "path": "http://localhost:3001/sessions/9ff1c415-2dcc-4505-8414-4391967064bc/files/510647c3-62fc-4412-b189-a6b872606f10/tokens" 
} 

しかし、私は私のコンソールでのエラーを取得:

uploads.forEach(function(object){ 
    res.json({ 
    sessionId: object.sessionId, 
    fileId: object.id, 
    path: `${baseUrl}/sessions/${object.sessionId}/files/${object.id}/tokens` 
    }); 
}); 

私の応答はこれまでのところよさそうだ

Error: Can't set headers after they are sent.

どうすればそのエラーを回避できますか?

答えて

1

res.jsonはリクエスト/応答のサイクルを終了するので、forEachにこれを入れることはできません。これは、既に解雇された後に応答を発行しようとするためです。それらはforループの最初の反復中に送信され、次の反復はそれらを変更しようとしましたが、それらはもう存在しないため許可されません - クライアントのためにすでに残っているレスポンス)

代わりに、あなたの 'forEach'のオブジェクトのこれをループ外のレスポンスオブジェクトに渡します。

var data = [] 
    uploads.forEach(function(object){ 
     data.push({ 
     sessionId: object.sessionId, 
     fileId: object.id, 
     path: `${baseUrl}/sessions/${object.sessionId}/files/${object.id}/tokens` 
     }); 
    }); 
    res.json(data); 
関連する問題