今天在学习node时,遇到了一个苦恼很久的问题,表单传值时,进行数据库操作时,数据一直显示空,后来检查req.body没有数据,但是游览器中的formData却显示有数据,看了很多文章,问题,都是说让用body-parse,但是添加了body-parse之后还是不可以。
后来看到有一篇博客说 body-parser 不支持 contentType: multipart/form-data 的格式类型,不支持formData格式。需要使用 connect-multiparty 第三方模块,于是在路由中引入了一个connect-multiparty中间件便没有问题了。
路由代码
//引入中间件,处理multipart数据
const multipart = require('connect-multiparty')
const multipartMiddleware = multipart()
articleApp.post(
'/add',
[multipartMiddleware, article.add, category.getList],
(req, res) => {
let { user, categories } = req
if (req.insertId) {
res.render('admin/article/add', {
user: user,
categories: categories,
code: 1,
})
} else {
res.render('admin/article/add', {
user: user,
categories: categories,
code: 0,
})
}
}
)
数据库与路由之间的中间件
add: (req, res, next) => {
let { title, content, hot, category_id } = req.body
//没有引入connect-multiparty时,req.body一直是空的
let article = {
title: title,
content: content,
hot: hot ? 1 : 0,
category_id: category_id,
thumbnail: req.uploadUrl ? req.uploadUrl : null,
}
Article.add(article)
.then(results => {
req.insertId = results
next()
})
.catch(err => {
next(err)
})
}
在学习Node.js时遇到表单提交数据到数据库时,发现req.body为空,尽管浏览器中的formData显示有数据。问题在于body-parser不支持multipart/form-data格式。解决方案是使用connect-multiparty中间件处理formData数据。

255

被折叠的 条评论
为什么被折叠?



