Я играю со всеми фантастическими платформами node.js/mongodb/express и наткнулся на проблему:
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);
}
});
});
Как вы, наверное, догадались, catalog.byTag(tag, callback)
выполняет запрос find()
к Mongodb и возвращает курсор
Это приводит к ошибке:
TypeError: first argument must be a string or Buffer
В соответствии с doc mongodb,
Я попытался передать этот преобразователь в stream()
:
function(obj) {return JSON.stringify(obj);}
но это не помогает.
Может ли кто-нибудь сказать мне, как правильно передать что-то в ответ?
Или это единственное решение, позволяющее вручную накачивать данные с помощью событий "данных" и "конца"?