2016-06-21 3 views
0

Я только что прочитал документацию о шкиперах с парусами. Похож на хороший способ обработки многостраничных файлов.Как загрузить поток, который не является многочастным в sailsjs

Однако, если я хочу потоковое загрузить что-то, что не является многопользовательской полезной нагрузкой? - в моем текущем случае его простая загрузка «text/csv».

Я пробовал просто использовать request.pipe ... но это, похоже, не работает.

ответ

0

И ответ ... шкипер здесь не поможет. Скорее, (как и в общем экспресс-приложении) используйте middleware перед шкипером, который устанавливает req._body = true, чтобы обмануть вверх по телу bodyParser (который по умолчанию является шкипером для парусов).

В моем случае, в конфигурации/http.js:

var typeIs = require('type-is'); 

module.exports.http = { 

    middleware: { 

    order: [ 
     ... 
     'dontParseCSV', 
     ... 
     'bodyParser', 
     ... 
    ], 
    dontParseCSV: function (req, res, next) { 
     if(typeIs(req, 'csv')) { 
     // fool body parser into thinking already parsed 
     // so we can stream csv 
     req._body = true; 
     } 
     next(); 
    }, 
    ... 
    } 
}; 

Маршрутизатор поставляется после bodyParser, так что это может быть немного неудобно делать это для всего конкретного маршрута (по крайней мере, если вы хотите маршрутизатор распознает маршрут и не просто взломает в регулярном выражении :)). В моем случае все мои другие маршруты принимают только json, так что это не проблема.