2015-06-09 3 views
0

Я использую этот модуль: https://github.com/nulltask/express-csv (также попробовал еще пару)Экспресс JS + Mongoose с различными модулями Csv посылает неправильные данные

 MyModel.find(mquery,function(err, list){ 
      if(err){ 
       console.log(err); 
       var response = { 
        success: false, 
        data: null 
       }; 
       res.json(response); 
      }else{ 
       console.log(list); 
       res.setHeader('Content-disposition', 'attachment; filename=mylist.csv'); 
       res.csv(list); 
      } 
     }); 

Проблема заключается в том, что отображается в файле CSV. Это сама модель Мангуста. Но на консоли записываются фактические данные.

Любые подсказки?

Update

По-видимому статические данные в формате JSON оно отображается в файле CSV, так что должно быть что-то с синхронизацией ....

+0

Как вы видите консольные журналы? из вашего кода он будет только console.log, если есть ошибка .. –

+0

Я его оставил. И добавьте его после редактирования. –

+0

Является ли csv, который вы пишете сложным или что-то еще? Создать такой файл csv довольно просто, без какой-либо внешней библиотеки. Посмотрите эту скрипту: https://jsfiddle.net/zcsmnzy6/ Я создал этот модуль для проекта, над которым я работал, и он выводил данные из запроса поиска мангуста без каких-либо проблем ... –

ответ

0

Запрос мангуст возвращает документ, а не простой объект, несмотря на не указав это четко в своих документах (stackoverflow.com/a/14504387/3366809). Это смешивает express-csv или все, что пытается зациклиться на нем. Используйте query() в запросе для возврата объекта вместо документа.

var myquery = MyModel.find(mquery); 
myquery.lean().exec(function(err, list) { 
    if (err) { 
    console.log(err); 
    var response = { 
     success : false, 
     data : null 
    }; 
    res.json(response); 
    } else { 
    console.log(list); 
    res.setHeader('Content-disposition', 'attachment; filename=mylist.csv'); 
    res.csv(list); 
    } 
});