2015-02-11 25 views
6

Sto provando a inviare un grande set di risultati da un database Mongo all'utente di un'applicazione Koa (usando Mongoose).Scrittura di una risposta di streaming da una query di streaming in Koa con Mongoose

Originariamente ho avuto qualcosa di simile:

var res = yield Model.find().limit(500).exec(); 
this.body = {data: res}; 

Tuttavia, la dimensione del set di risultati vengono inviati stava causando l'applicazione per time out, e come tale mi piacerebbe trasmettere la risposta in quanto proviene da il database.

Con Mangusta è possibile ruotare il risultato di una query in un flusso facendo qualcosa di simile:

var stream = Model.find().limit(300).stream(); 

Tuttavia, non sono sicuro di come scrivere questo flusso in risposta preservando il formato necessario. Voglio qualcosa di simile accada:

this.body.write("{data: "}); 
this.body.write(stream); 
this.body.write("}"); 

ma io so che non c'è body.write in Koa e sono sicuro che non sto usando i flussi correttamente sia. Qualcuno può indicarmi la giusta direzione?

risposta

4

koa-write può aiutare.

ma potrebbe non essere necessario. Koa permette di fare:

this.body = stream; 

Nel tuo caso è possibile creare un flusso di trasformazione in quanto il flusso di mangusta non è esattamente ciò che si desidera in uscita.