Strumień z kursora mongodb do odpowiedzi Express w node.js
Zajmuję się wszystkimi fantazyjnymi platformami node.js / mongodb / express i natknąłem się na problem:
app.get('/tag/:tag', function(req, res){
var tag=req.params.tag;
console.log('got tag ' + tag + '.');
catalog.byTag(tag,function(err,cursor) {
if(err) {
console.dir(err);
res.end(err);
} else {
res.writeHead(200, { 'Content-Type': 'application/json'});
//this crashes
cursor.stream().pipe(res);
}
});
});
Jak się zapewne domyślasz,catalog.byTag(tag, callback)
robi afind()
zapytanie do Mongodba i zwraca kursor
Prowadzi to do błędu:
TypeError: first argument must be a string or Buffer
Wedługdokument sterownika mongodb, Próbowałem przekazać ten konwerter dostream()
:
function(obj) {return JSON.stringify(obj);}
ale to nie pomaga.
Czy ktoś może mi powiedzieć, jak poprawnie przesłać coś do odpowiedzi?
Czy może jedynym rozwiązaniem jest ręczne pompowanie danych za pomocą zdarzeń „data” i „end”?