작성
·
172
답변 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 문법을 사용해 비동기 코드를 보다 명료하게 표현하면서 에러 처리도 용이해집니다.