nodejs中form表单传值,req.body显示空的问题,但是表单却有数据

在学习Node.js时遇到表单提交数据到数据库时,发现req.body为空,尽管浏览器中的formData显示有数据。问题在于body-parser不支持multipart/form-data格式。解决方案是使用connect-multiparty中间件处理formData数据。

今天在学习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)
			})
	}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值