Express & connect-busboy abaikan beberapa permintaan

Saya menggunakan connect-busboy dengan express:

var busboy = require('connect-busboy');

app.configure(function () {
    app.use(express.logger());
    app.use(busboy());
    app.use(bodyParser());
    app.use(function(err, req, res, next){
        res.send(500, 'error');
    });

dan dengan permintaan berikut:

app.post('/save', function (req, res) { 
       console.log("Got request")
         try {
         console.log("I got it");
         req.pipe(req.busboy);
         var name = "";
         var start = "";
         var fstream;
        req.busboy.on('field', function (fieldname, val, fieldnameTruncated, valTruncated) { }


        req.busboy.on('file', function (fieldname, file) {
           //some code
        }

        req.busboy.on('error', function (error) {
                console.log("Error in uploading file with chunks: "  + error);
            // some code
         })
        req.busboy.on('finish', function () {
               fstream.on('close', function(){
                       //some code
    })
})

klien mengirimi saya 6 permintaan untuk perintah simpan. Saya mendapatkan 2-6 permintaan secara tidak konsisten.

Artinya, Got request hanya dicetak 2 kali, tetapi klien mengirim 6 kali permintaan.

Ketika saya menghapus baris app.use(busboy());, Express.app mendapatkan permintaan 6 (tetapi saya tidak dapat menggunakan fungsinya karena req.busboy.on tidak berfungsi).

Kesimpulannya adalah app.use(busboy()); mengabaikan beberapa permintaan dari klien, dan app.post tidak diaktifkan. Bagaimana cara mengatasinya?


person Or Smith    schedule 14.08.2014    source sumber
comment
connect-busboy tidak mengakhiri permintaan apa pun, ia hanya memanggil next() untuk menuju ke middleware/rute berikutnya. kode sumber cukup sederhana.   -  person mscdex    schedule 14.08.2014
comment
@mscdex: Jadi mengapa ini terjadi?   -  person Or Smith    schedule 14.08.2014
comment
Yang bisa saya katakan adalah masalahnya tidak terletak pada kode apa pun yang Anda posting sejauh ini.   -  person mscdex    schedule 14.08.2014
comment
@mscdex: Tetapi ketika saya menghapus baris app.use(busboy());, saya berhasil mendapatkan semua permintaan.   -  person Or Smith    schedule 14.08.2014
comment
Coba ganti app.use(busboy()); dengan app.use(function(req,res,next){next();});   -  person mscdex    schedule 14.08.2014
comment
tapi saya menggunakan req.busboy.on dalam permintaan...   -  person Or Smith    schedule 14.08.2014


Jawaban (1)


Satu hal yang harus Anda lakukan adalah menghapus app.use(bodyParser()); karena busboy sudah menangani body parsing.

person mscdex    schedule 14.08.2014