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

tnwjdrms님의 프로필 이미지
tnwjdrms

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

패스포트 사용하기

return 유무

작성

·

184

0

routes/ page.js

router.get('/profile', (req, res) => {
res.render('profile', { title: '내 정보 - NodeBird' });
});

router.get('/join', (req, res) => {
res.render('join', { title: '회원가입 - NodeBird' });
});

router.get('/', (req, res, next) => {
const twits = [];//메인게시물들
res.render('main', {
title: 'NodeBird',
twits,
})

})

에서는 return 문을 쓰지 않는데 

routes/auth.js 와 같이

outer.post('/join', async (req, res, next) => {
const { email, nick, password } = req.body;
try{
const exUser = await User.findOne({ where: {email} });
if (exUser){
return res.redirect('/join?error=exist'); //front에서 query보고 처리
}
const hash = await bcrypt.hash(password, 12);
await User.create({
email,
nick,
password: hash,
});
return res.redirect('/');
} catch(error){
console.error(error);
return next(error);
}
});

return 으로 next(error)나 res.render 등등 을 해주는 이유가 뭔가요?

답변 2

0

tnwjdrms님의 프로필 이미지
tnwjdrms
질문자

아 그렇군요! 감사합니다😁

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

명시적으로 함수가 종료된다는 것을 보여준 거고요. 위 예제에서는 안 붙여도 되지만 붙이는 습관을 들이는 게 에러가 안 나서 좋습니다. 잘못해서 res 메서드가 두 번 이상 호출되면 cannot send header twice라는 에러 발생하거든요.

tnwjdrms님의 프로필 이미지
tnwjdrms

작성한 질문수

질문하기