인프런 커뮤니티 질문&답변

foxball님의 프로필 이미지
foxball

작성한 질문수

프로젝트로 배우는 React.js

36 블로그 db에서 받아와서 화면에 보여주기

코지코더님 안녕하세요. 강의 열심히 잘듣고 있습니다

작성

·

287

0

코지코더님 안녕하세요. 강의 열심히 잘듣고 있습니다.

강의를 보면서 client(리액트), server(mongoose) 로

작업중입니다.

create/delete/read는 잘 구현이 되었으며,

TodoList 목록중 목록1개를 클릭하면, 나오는 상세User

페이지가 좀 힘드네요 ^^;

클라이언트에서 보내는 값은

1,2,3..... 이런 숫자이고요. server로 넘어가면 string 타입으로 넘어옵니다.

mongoose에 생성된건 objectId 타입이라서, 서로 매칭이 안되네요. 잘몰라서 여쭤봅니다. 방법이 없을까요?

아래는 제 코드 입니다.

  userRouter.get('/board/:userId',async(req,res)=>{
    try{
    const {userId} = req.params;
    const user = await User.findOne({_id:userId})
    return res.status(200).json({success:true, user})
    }catch(err){
    console.log(err);
    return res.status(500).send({err: err.message})
    }
    })

const getPost=(id)=>{
axios.get(`/users/board/${id}`).then((response)=>{
setPost(response.data.user);
})
}

useEffect(()=>{
    getPost(id)
},[])

답변 1

0

코지 코더님의 프로필 이미지
코지 코더
지식공유자

몽고디비로 하셔서 objectId로 생성이 되었다면 숫자가 아니라 몽고디비 obejctId를 생성하면서 있는 string을 넣어주셔야겠네요 예) /users/board/4edd40c86762e0fb12000003

그리고 mongoose.Types.ObjectId('4edd40c86762e0fb12000003'); 이런식으로 ObjectId로 변환하셔서 findOne으로 찾아지지 않을까 생각이 듭니다.

foxball님의 프로필 이미지
foxball

작성한 질문수

질문하기