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

Kwon님의 프로필 이미지
Kwon

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

노드 리액트 기초 강의 #7 BodyParser & PostMan & 회원 가입 기능

postman 에러

작성

·

178

0

안녕하세요. 현재 7강 듣고 있는데요,

 

node.js run하고 postman에 이름, 이메일, 패스워드 넣어서 요청하면 에러 뜨고 종료가 됩니다... 이유가 뭔가요?

 

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.

문제의 원인은 Mongoose 라이브러리의 사용법이 업데이트 되면서, save() 메소드에서 콜백 함수를 더 이상 사용하지 않게 되었기 때문입니다. 현재의 Mongoose 버전에서는 save() 메소드가 프로미스(Promise)를 반환하므로, 비동기 작업을 처리하는 표준 방법으로 async/await 문법을 사용하는 것이 좋습니다.

예제 코드를 기반으로 수정 제안을 드리겠습니다. 기존에 save() 메소드를 사용할 때 콜백 함수를 전달하는 대신, async/await 문법을 사용해주세요. 수정할 수 있는 코드의 일부는 다음과 같습니다:

기존 코드:

user.save((err, userInfo) => {
  if(err) return res.json({ success: false, err })
  return res.status(200).json({
    success: true
  })
})

수정된 코드:

app.post('/register', async (req, res) => {
  try {
    const user = new User(req.body);
    const userInfo = await user.save();
    res.status(200).json({ success: true, userInfo });
  } catch (err) {
    res.json({ success: false, err });
  }
});

위 수정 사항을 적용하면, Mongoose 모델의 save 메소드를 사용할 때 발생하는 에러를 해결할 수 있습니다. Async/await 문법을 사용해 비동기 코드를 보다 명료하게 표현하면서 에러 처리도 용이해집니다.

Kwon님의 프로필 이미지
Kwon

작성한 질문수

질문하기