req.body和req.file是第一次定义的



当我第一次记录req.body和req.file时,它是在第一个console.log中定义的,但当我试图访问它们时,它没有定义,我完全不知道为什么。

我正在建立一个小型的社交网络,所以当我发布带有一些文本的图片时,即使有这个错误,帖子也会保存在mongo中

以下是错误:

TypeError: Cannot read properties of undefined (reading 'filename')
at exports.createPost (/Users/curlynux/Documents/groupomania-p7/backend/api/controllers/postController.js:12:26)

但在这个错误之后,req.file被定义并运行良好。。。为什么之后?错误后:

{
fieldname: 'image',
originalname: '73423630_448993115731641_5411606821110292030_n.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'images',
filename: '73423630_448993115731641_5411606821110292030_n.jpg1663242018229.jpeg',
path: 'images/73423630_448993115731641_5411606821110292030_n.jpg1663242018229.jpeg',
size: 41437
}
73423630_448993115731641_5411606821110292030_n.jpg1663242018229.jpeg
POST /post 201 74.811 ms - 26

req.body首先定义:

{
login: 'login',
imageUrl: 'string',
post_text: 'test',
like: '0',
disLike: '0'
}

但在?之后未定义:[Object: null prototype] {}

我的postController.js:

const express = require("express");
const app = express();
const Post = require("../models/postModel");
app.use(express.json())
app.use(express.urlencoded({extended: false}))
exports.createPost = (req, res) => 
{
console.log(req.body);
console.log(req.file);
console.log(req.file.filename);
const post = new Post({post: {
login: req.body.login,
imageUrl: `${req.protocol}://${req.get("host")}/images/${req.file.filename}`,
post_text: req.body.post_text,
like: req.body.like,
disLike: req.body.disLike
}})
post.save().then(() => res.status(201).json({message: "post created"}))

}

chrome错误:POST http://localhost:8080/post 500 (Internal Server Error) home.jsx:69

chrome错误的相应代码:

try
{
fetch("http://localhost:8080/post", 
{
method: "POST",
mode: "cors",
headers: postHeader,
body: JSON.stringify(postData)
}).then(response => console.log(response))
.then(data => console.log(data))
} catch (error)
{console.error(error)}
对于数据处理,我建议您使用Multer。Express默认情况下不处理缓冲区或这种类型的数据

https://www.npmjs.com/package/multer

最新更新