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