inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

React로 NodeBird SNS 만들기

6-11. 폼데이터로 게시글 올리기

폼데이터로 포스팅 api 라우터 질문이여

136

terecal

작성한 질문수 162

0


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(''isLoggedInupload.none(), async (reqresnext=> {
    // 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);
    }
});
```

javascript react

답변 1

0

제로초(조현영)

네네 none은 폼데이터를 업로드하지만 이미지나 비디오같은 파일은 없을 때 합니다.

Image 테이블에 postId가 들어있을 겁니다. 그 아이디를 보고 post테이블과 합쳐줍니다. 쉽게 생각하려면 여러 개인 쪽에서 한 개인 쪽의 아이디를 관리한다고 보시면 됩니다.

next 10 이상에서는 redux dev tool 구동이 안되나요?

0

272

1

세션 갱신 문의 건

0

484

7

배포 진행 후 Highlight updates components render 표시

0

445

1

똑같은 기능을 하는 테이블

0

448

4

관계형

0

312

2

프론트 서버를 이용하지 않는경우

1

299

3

인피니트 스크롤링 사용시 오류

0

278

0

계속 이런에러가 떠서 해결하기는 했는데 어떤 의미인지 모르겠습니다.

0

434

2

req.user가 언제 생성되나요??

0

330

2

Cannot read property 'id' of null 에러

0

333

1

리트윗한 게시글 불러오는 sequelize

0

252

1

result.data에서 images인 이유

0

281

2

takeLatest에 대한 질문입니다.

1

342

2

프론트에서 express를 사용하지 않을때 동적라우팅

0

501

6

getInitialProps가 클라이언트에서 수행되는 이유?

0

258

1

리로드하면 팔로우 언팔로우 값이 초기화 되는 문제입니다.

0

445

2

스타일드 컴포넌트와 className을 통한 스타일 적용의 차이에 대해 궁금합니다

0

585

2

할인 쿠폰 사용이 안되는되요 (848-f9af83f183e3)

0

365

1

nodejs mvc 패턴

0

976

4

사용하고 보니, 람다 구성이 궁금합니다!

0

266

1

제로초님

0

445

1

새로고침 로그인 풀림 문제.

0

247

1

안녕하세요. 강의 너무 감사합니다

0

157

1

제로초님

0

170

1