javascript - 通过节点js中的html表单在post fumction中传递req数据时遇到问题
问题描述
我是nodejs的新手。通过 html 表单发布数据时面临问题....在我的 server.js 中,我添加了这个发布功能请求
app.get('/',(req,res)=>{
res.end(`
<!doctype html>
<html>
<body>
<form action="/product" method="post" role="form" enctype="multipart/form-data">
<input type="text" id="title" name="title" placeholder="title">
<input type="number" name="price" placeholder="price">
<input type="text" name="description" placeholder="description">
<input type="text" name="category" placeholder="category" >
<input type="file" name="product" >
<button>Save</button>
</form>
</body>
</html>
`);
})
在 product.js 中发布函数声明
const productRouter = express.Router();
productRouter.use(bodyParser.json());
productRouter.route('/')
.get((req,res,next)=>{
Product.find({})
.then((products)=>{
res.statusCode=200;
res.setHeader('Content-Type','application/json');
res.json(products);
},(err)=>next(err))
.catch((err) => next (err));
})
.post((req,res,next)=>{
console.log(req.body);
var Prod= new Product({
title:req.body.title,
price:req.body.price ,
description: req.body.description,
category:req.body.category,
img: req.body.img
});
Prod.save()
.then((product)=>{
console.log('product added ',product );
res.statusCode=200;
res.setHeader('Content-Type','application/json');
res.json(product);
},(err)=> next(err))
.catch((err) => next(err));
})
当我使用 POSTMAN 时,发布请求工作正常,但是当尝试使用 html 表单时,我面临以下错误:
ValidationError:产品验证失败:标题:title
需要路径。,价格:price
需要路径。,描述:description
需要路径。,类别:category
需要路径。,img:img
需要路径。在 model.Document.invalidate (C:\Users\mayank\Desktop\cata\node_modules\mongoose\lib\document.js:2598:32)
解决方案
检查 body-parser README 部分的注释(附上截图供参考)。由于其复杂性,BodyParser 不支持多部分样式。相反,列出了一些要使用的 nm 模块。
我建议MULTER或MILTIPARTY
这是正在运行的代码的参考。我已将接收到的有效负载作为 JSON 响应发送。您可以继续按照您的意愿处理方式。
router.post('/ola', (req, res) => {
var form = new multiparty.Form();
form.parse(req, function(err, fields, files) {
res.json({ fields: fields, files: files });
});
})
推荐阅读
- github - 在 PR 上使用的 Github Actions 分支
- javascript - 将字符串化的变量列表转换为 Javascript 中的字符串化变量列表
- azure - 如何使用 az cli 列出存储 blob url?
- python - 如何连接元组并将其放入单个项目列表中?
- ios - AVAudioSession 不会自动连接蓝牙 A2DP 音频?
- r - 用 ggplot 将 sigmoidal 曲线拟合到点
- java - 从字符串编译java源代码并将输出保存到流而不是文件
- python - 在 Databricks 中保存张量流模型
- batch-file - 通过带有bat(Windows)的Jenkins并使用Pipeline将提交消息字符串值保存在环境变量中?
- sql - 从多个查询的总和中获取百分比