2015-02-11 9 views
6

Я пытаюсь отправить большой результат из базы данных Mongo пользователю приложения Koa (используя Mongoose).Запись потокового ответа из потокового запроса в Koa с Mongoose

Первоначально я имел что-то вроде:

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

Однако размер результирующего набора посылается причинял приложение к тайм-аут, и как таковой, я хотел бы, чтобы поток ответа, как это происходит от базы данных.

С Mongoose вы можете превратить результат запроса в поток, делая что-то вроде:

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

Однако, я не знаю, как написать этот поток в ответ, сохраняя при этом формат, необходимый. Я хочу что-то подобное произойдет:

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

, но я знаю, что нет body.write в Коа, и я уверен, что я не использую потоки должным образом либо. Может ли кто-нибудь указать мне в правильном направлении?

ответ

4

koa-write может помочь.

, но вам это может не понадобиться. Коа позволяет сделать:

this.body = stream; 

В вашем случае вы можете создать преобразование потока, поскольку поток мангуст не совсем то, что вы хотите вывести.