2016-07-07 14 views
0

私は今NodeJSとBusboyを使用して私のプロジェクトに立ち往生しています。 ルータからすべての変数を取得してコントローラに送信しようとしています。ノードJS - バスボイのパラメータを取得

app.js(ルート)

router.post('/product', function (req, res) { 
var fields = {}; 
req.busboy.on('field', function(fieldname, val) { 
     fields[fieldname] = val; 
}); 
req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) { 
    fields[filename] = file; 
}); 
req.pipe(req.busboy); 


productController.addNewProduct(fields, function (data) { 
    res.json(data); 
}); 
}); 

ProductController.js

addNewProduct: function (params, callback) { 
    productLogic.addNewProduct(params, function (data) { 
     callback(data); 
    }); 
}, 

ProductLogic.js

addNewProduct: function (params, callback) { 
    Product.findOne({ name: params.name }, function (err, product) { 
     if(err) callback({ status: false, message: err }); 

     if(product) 
      callback({ status: false, message: 'Produk sudah ada.' }); 

     var newProduct = new Product({ 
      name: params.name, 
      category_id: params.category_id, 
      description: params.description, 
      is_active: true 
     }); 

     newProduct.save(function (err, result) { 
      if(err) callback({ status: false, message: err }); 

      callback({ status: true, message: result }); 
     }); 
    }); 
}, 

私の目標は、一度にすべてのデータを処理することです。そして、今私はバスボイとそれを達成できるかどうかはわかりません。

私にこれを手伝ってください。あなたのメソッドを呼び出す前に、あなたのフォームを解析終了するbusboyのを待つ必要があり、事前

答えて

0

で感謝の

バンチ。

busboy.on('finish', function() { 
    productController.addNewProduct(fields, function (data) { 
    res.json(data); 
    }); 
}); 
0

私はすでに答えを見つけたと思います。 ヘッドアップのためのマルトンのおかげです。

私が試してみた:

busboy.on('finish', function() {}); 
をそれが放出されることはありません。

busboy.on('file', function(fieldname, file, filename, encoding, mimetype) { 
fields[fieldname] = file; 
file.resume(); 

もう一度感謝:)

理由はたとえば、私は私のbusboy.on( 'ファイル')に()file.resumeする必要があります

関連する問題