관리 메뉴

프론트엔드 정복하기

React_랜딩페이지에 video 업로드 본문

React/강의-youtube따라하기

React_랜딩페이지에 video 업로드

GROWNFRESH 2020. 6. 3. 20:32

Logic

0. 비디오 카드 Template 만들기

-Row, Col, Card, moment, format 활용 (React 사전 참고)

 

 

1. mongoDB에서 video.data 가져오기

 

  1) client에서 server로 [ get 요청 ] 보내기

더보기

    useEffect(() => {

        Axios.get('/api/video/getVideos')

            .then(response=>{

                if(response.data.success){

                    console.log(response.data)

                }else{

                    alert('비디오 가져오기를 실패했습니다.')

                }

            })

    }, [])

 

  2) server에서 DB 데이터를 client로 보내기 (find, populate, exec 메소드)

더보기

router.get('/getVideos', (reqres)=>{

    

    //비디오를 DB에서 가져와서 client에게 보내기

    

    Video.find()  // video collection 안에 있는 모든 비디오를 가져옴

        .populate('writer')   //populate 하지 않으면 > user Id 만 가져오고, populate하면 writer의 모든 정보를 가져온다.

        .exec ((err,videos)=>{

            if(errreturn res.status(400).send(err);

            res.status(200).json({success:truevideos})

        })

}) 

 

 

 

2. video.data를 스크린에 출력 (useState, map)

 

  1) state에 DB의 video.data 담기

더보기

const [VideosetVideo= useState([ ])

 

    useEffect(() => {

        Axios.get('/api/video/getVideos')

            .then(response=>{

                if(response.data.success){

                    console.log(response.data)

                    setVideo(response.data.videos)

                }else{

                    alert('비디오 가져오기를 실패했습니다.')

                }

            })

    }, [])

 

  2) video.data로 스크린에 출력  ( map() , moment.format() )

더보기

    const renderCards=Video.map((videoindex)=>{

        var minutes = Math.floor(video.duration / 60);

        var seconds = Math.floor((video.duration - minutes*60));

 

        return <Col lg={6} md={8} xs={24}>

            <a href={`/video/post/${video._id}`}>

                <div style={{position:'relative'}}>

                    <img style={{width:'100%'}} src={`http://localhost:5000/${video.thumbnail}`} alt="thumbnail"/>

                    <div className="duration">

                        <span>{minutes} : {seconds}</span>

                    </div>

                </div>

            </a>

            <br/>

            <Meta

                avatar={

                    <Avatar src={video.writer.image}/>

                }

                title={video.title}

                description={video.description}

            />

            <span>{video.writer.name}</span><br/>

            <span style={{marginLeft:'3rem'}}>{video.views} views</span>-<span>{moment(video.createdAt).format("MMM Do YY")}</span>

        </Col>

    })

'React > 강의-youtube따라하기' 카테고리의 다른 글

React_SideVideo 만들기  (0) 2020.06.05
React_비디오 디테일 페이지  (0) 2020.06.05
React_비디오 업로드하기  (0) 2020.06.02
React_썸네일 기능  (0) 2020.06.02
React_Server에 비디오 저장  (0) 2020.06.01