如果我不上传文件,如何从 npm 的 multer 获取请求的主体?

How do I get the body of a request from npm's multer if I don't upload a file?

我有一个使用 express 的节点服务器。

我最初使用的是 body-parser,但不允许上传文件。所以,我切换到 multer(与 express 的最简单集成)。但是,为了获得任何 req(特别是 req.body),这是我的代码:

var multer = require('multer');
var upload = multer({ dest : 'uploads/' });

server.all('/example', function (req, res, next) {
    var up = upload.single('photo')
    up(req, res, function(err) {
        console.log(req.body); // I can finally access req.body
    });
}

问题在于,并非我的所有路线都需要上传文件。我是否需要在为每条路线调用 upload.single() 时浪费 CPU 才能访问正文? upload.single('')最终没有上传任何文件,但它仍然在主线程上花费了宝贵的时间。

看来 upload.single() 正在等待回调,所以它可能没有我做的那么重要,但我不喜欢在不需要时调用函数.

有没有办法绕过调用 upload.single(),或者我只是在做比实际更大的交易?

对于纯文本多部分表单,您可以使用任何 multer 方法,它们是 .single().array()fields()

例如使用.array()

var multer = require('multer');
var upload = multer({ dest : 'uploads/' });

server.all('/example', upload.array(), function (req, res, next) {
    console.log(req.body);
});

使用哪个并不重要,只要调用时不带参数 Multer 只会为您解析表单的文本字段,不会解析文件