首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点JS - Busboy检索参数

节点JS - Busboy检索参数
EN

Stack Overflow用户
提问于 2016-07-08 01:34:33
回答 2查看 1.2K关注 0票数 0

我现在坚持使用NodeJS和餐童来做我的项目。我正在尝试从我的路由器中检索所有变量,并将其发送给控制器。

app.js (路由)

代码语言:javascript
复制
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

代码语言:javascript
复制
addNewProduct: function (params, callback) {
    productLogic.addNewProduct(params, function (data) {
        callback(data);
    });
},

ProductLogic.js

代码语言:javascript
复制
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 });
        });
    });
},

我的目标是一次性处理所有数据。现在我不确定我能不能用餐童做到这一点。

请在这方面帮帮我。

提前说一堆谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-07-08 16:52:22

在调用您的方法之前,您应该等待服务生完成对表单的解析。

代码语言:javascript
复制
busboy.on('finish', function() {
  productController.addNewProduct(fields, function (data) {
    res.json(data);
  });
});
票数 0
EN

Stack Overflow用户

发布于 2016-07-09 00:02:54

我想我已经找到答案了。感谢马顿的提醒。

我试过了:

代码语言:javascript
复制
busboy.on('finish', function() {});

但它从来没有排放过。

原因是我必须在我的文件(‘busboy.on’)中使用file.resume(),例如:

代码语言:javascript
复制
busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
fields[fieldname] = file;
file.resume();

再次感谢:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38251833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档