Node.js使用express+multer接收Nuxt前端数组仅返回[object Object]问题
问题原因
FormData.append()方法仅支持传入字符串、Blob、File三种类型的参数,你直接将对象数组传入时,JavaScript会自动调用toString()方法做隐式类型转换,对象数组的转换结果就是你收到的[object Object],[object Object]- 当前请求是携带文件的
multipart/form-data类型,这类请求由multer负责解析,body-parser默认不会处理该类型请求体,不存在body-parser配置错误的问题
解决方案
前端Nuxt代码修改
将数组序列化为JSON字符串后再传入FormData:
async savePost() { const data = new FormData() data.append('postTitle', this.postTitle) // 改动点:数组转JSON字符串 data.append('content', JSON.stringify(this.array)) data.append('mainImage', this.selectedFile, this.selectedFile.name) const blogPost = await this.$axios.$post('/api/create-blog-post', data) if (blogPost.success) { console.log(blogPost) } },
后端Node代码修改
收到内容后反序列化为原数组即可:
exports.createBlogPost = async (req, res) => { console.log(req.body) try { const post = new BlogPost({ postTitle: req.body.postTitle, // 改动点:JSON字符串转回原数组 content: JSON.parse(req.body.content), mainImage: req.file }) await post.save() if(post) { return res.status(200).json({ success: true, message: 'Saved blog post successfully', post: post }) } } catch(err) { console.log(err) return res.status(500).json({success: false, message: '保存失败'}) } }
提示:建议给
JSON.parse逻辑增加单独的异常捕获,避免传入非法JSON格式时服务端抛出未处理错误。
内容的提问来源于stack exchange,提问作者Philippe
相关产品推荐
相关产品推荐

