• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

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

22.12.07 15:52 작성 조회수 218

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으로 찾아지지 않을까 생각이 듭니다.