【发布时间】:2019-11-21 14:16:30
【问题描述】:
我正在使用 nodejs 并为我的项目表达 4.16。因此,对于正文解析,我没有使用已弃用的正文解析器,而是使用类似的东西
app.use(express.json()); //Used to parse JSON bodies
app.use(express.urlencoded()); //Parse URL-encoded bodies
正如doc 所说。
所以,在我的一个控制器中,我只有一个后置控制存在一些问题。这是我的代码:
var express = require('express');
const router = express.Router();
const passport = require('passport');
//multer
const multer = require('multer')
var diskStorage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/tmp/')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
//var memoryStorage = multer.memoryStorage()
const upload = multer({ storage: diskStorage })
router.post('/update-cloud', passport.authenticate('jwt', {session: false}), upload.single('file'), async (req, res) => {
try {
console.log(req);
return res.status(200);
} catch (err) {
console.log(err);
res.status(500).json({
"error": 500,
"descr": err
});
}
})
router.post('/cloud-items/:id', async (req, res) => {
try {
console.log(req.body);
return res.status(200);
} catch (err) {
console.log(err);
res.status(500).json({
"error": 500,
"descr": err
});
}
})
module.exports = router;
在第二个控制器中,我的 req.body 似乎是空的,而在第一个控制器中不是。我试图 console.log() 这个,这是一个缓冲区,不是 persed,像这样:
body: <Buffer 2d 2d 2d 2d 2d 2d 57 65 62 4b 69 74 46 6f 72 6d 42 6f 75 6e 64 61 72 79 46 6b 6a 69 6e 53 33 67 4b 66 66 36 32 42 41 55 0d 0a 43 6f 6e 74 65 6e 74 2d ... >,
如果我尝试将中间件护照和静音添加到第二个控制器,一切正常。为什么这个?在发现这个之前我已经疯了。
【问题讨论】: