Ich benutze einen Mungo-Cursor, um eine große Menge von Daten in Teilen zu erhalten und sie progressiv zu senden, wenn ich jedes Teil erhalte. Um dies zu tun, verwende ich die Methode res.write()
.Gibt es ein Zeitlimit für die 'response.write' Methode in node.js?
cursor.on('data', (doc) => {
/*Array opening bracket only sent at the start*/
if (total === 0) {
res.write('[');
}
docs.push(doc);
total += 1;
/*Limit indicates each CSV length*/
if (docs.length === limit) {
res.write(JSON.stringify(docs));
res.write(',');
docs = [];
}
});
cursor.on('end', (doc) => {
...
/*Closing bracket sent after the array is completed*/
res.write(']');
...
res.end();
});
Wie oben in dem Code gesehen, ich habe eine Variable Grenze zu wissen, wann den nächsten Teil der Antwort zu schreiben. Wenn diese Variable zu groß ist, benötigt sie mehr Zeit, um jedes Teil zusammenzusetzen, und die Abfrage wird beendet, bevor ich sie schreiben kann. (Wenn ich diese Variable reduziere, funktioniert es gut). In diesem Fall enthält die Antwort nur die Zeichenfolge: '['
. Als hätte es nach einer gewissen Zeit die Methode res.end()
aufgerufen.
Meine Frage ist: Gibt es eine Zeitüberschreitung, wenn Sie die res.write()
Methode verwenden, nach der (wenn Sie nicht weiter schreiben oder senden Sie die Antwort) res.end()
heißt? Oder fehlt mir etwas?
'response.write' erwarten ein node.js Methode ist https: //nodejs.org/api/http.html#http_response_write_chunk_encoding_callback – kuzyn