我现在坚持使用NodeJS和餐童来做我的项目。我正在尝试从我的路由器中检索所有变量,并将其发送给控制器。
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 });
});
});
},我的目标是一次性处理所有数据。现在我不确定我能不能用餐童做到这一点。
请在这方面帮帮我。
提前说一堆谢谢
发布于 2016-07-08 16:52:22
在调用您的方法之前,您应该等待服务生完成对表单的解析。
busboy.on('finish', function() {
productController.addNewProduct(fields, function (data) {
res.json(data);
});
});发布于 2016-07-09 00:02:54
我想我已经找到答案了。感谢马顿的提醒。
我试过了:
busboy.on('finish', function() {});但它从来没有排放过。
原因是我必须在我的文件(‘busboy.on’)中使用file.resume(),例如:
busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
fields[fieldname] = file;
file.resume();再次感谢:)
https://stackoverflow.com/questions/38251833
复制相似问题