upload.none()은
뮬터를 이용해 프론트에서 서버로 넘긴 폼데이터를
const onSubmitForm = useCallback((e) => {
e.preventDefault();
if (!text || !text.trim()) {
return alert('게시글을 작성하세요.');
}
const formData = new FormData();
imagePaths.forEach((i) => {
formData.append('image', i);
});
formData.append('content', text);
dispatch({
type: ADD_POST_REQUEST,
data: formData,
});
}, [text, imagePaths]);
req.body에 세팅하기 위한 미들웨어 로직이다
이렇게 이해하면 되나여?
또 db에서 include 로직은
const fullPost = await db.Post.findOne({
where:{id:newPost.id},
include:[{
model:db.User,
}, {
model: db.Image,
}],
});
인데 user는
create 할때
const newPost = await db.Post.create({
content:req.body.content,
UserId:req.user.id,
});
이렇게 저장해서 포스트 테이블내의 정보이기 때문에
iinclude 모델 이름 이러면서 그냥 그 id로 user 정보를 검색해서 가져오는것 그렇게 생각했는데여
Image는 같은 테이블에 없는데 어떻게 이미지 데이터를 가져오는거져?
이에 대해 알려주시면 감사여 ~!~!
전체 코드
```
router.post('', isLoggedIn, upload.none(), async (req, res, next) => {
// console.log("req.body : " , req.body);
try {
const hashtags = req.body.content.match(/#[^\s]+/g);
const newPost = await db.Post.create({
content:req.body.content,
UserId:req.user.id,
});
if (hashtags) {
const result = await Promise.all(hashtags.map(tag => db.Hashtag.findOrCreate({
where: { name: tag.slice(1).toLowerCase() },
})));
console.log("result : ", result);
await newPost.addHashtags(result.map(r => r[0]));
}
if (req.body.image) { // 이미지 주소를 여러개 올리면 image: [주소1, 주소2]
if (Array.isArray(req.body.image)) {
const images = await Promise.all(req.body.image.map((image) => {
return db.Image.create({ src: image });
}));
await newPost.addImages(images);
} else { // 이미지를 하나만 올리면 image: 주소1
const image = await db.Image.create({ src: req.body.image });
await newPost.addImage(image);
}
}
const fullPost = await db.Post.findOne({
where:{id:newPost.id},
include:[{
model:db.User,
}, {
model: db.Image,
}],
});
res.json(fullPost);
} catch (e) {
console.error(e);
next(e);
}
});
```