inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

passport 세팅 및 회원가입 만들기

동기, 비동기 처리

262

양세종

작성한 질문수 2

0

코드복습중에 비동기, 동기처리 관련하여 궁금한점이 생겨 질문합니다!

 

const User = require('../models/user');
const bcrypt = require('bcrypt');

exports.join = async (req, res, next)=>{
    const { nick, email, password } = req.body;
    try {
        const exUser = await User.findOne({where: {email}});
        if(exUser){
            return res.redirect('/join?error=exist')
        }
        const hash = await bcrypt.hash(password, 14);
        await User.create({
            nick,
            email,
            password: hash,
        });
        return res.redirect('/');
    } catch(err){
        console.error(err);
        next(err);
    }

}

위의 코드가 수업중에 작성하신 코드입니다

 

여기서 아래부분만 이처럼 await를 뺀 상태로 변경하였는데,

const exUser = User.findOne({where: {email}});

if(exUser)true값이 되어

return res.redirect('/join?error=exist')으로 빠지게 되었습니다.

 

제가 이해하기로는 await가 붙은 비동기 처리들은 동기처리들이 완료되어 호출스택이 비기전까지는 task큐에서 대기하는 것으로 알고 있는데,

위의 현상대로면 await가 붙은 아래 코드 2개가 먼저 실행되고

const hash = await bcrypt.hash(password, 14);
await User.create({
      nick,
      email,
      password: hash,
});

 

이 코드가 실행된 것 같은데

const exUser = User.findOne({where: {email}});

 

왜 이런 현상이 발생하는지 궁금합니다!!! 감사합니다

node.js express await

답변 1

1

제로초(조현영)

아뇨 findOne이 먼저 실행되는게 맞습니다. await을 붙이지않으면 exUser는 Promise가 되고 Promise는 if문에서 무조건 true입니다.

깃헙 질문

0

82

2

강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.

0

76

1

aws - lightsail 이용 관련

0

58

1

4강 http 서버 만들때 ESM방식으로 해도 될까요?

0

81

2

모듈 사용 시 단점이 있나요?

0

82

1

node.js 버전 및 typescript 적용 문의

0

95

2

12.7. 방장기능(강퇴) 질문드립니다.

0

80

2

12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요

0

69

1

12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.

0

75

2

12.7.1스스로 해보기 질문되나요

0

95

3

시퀄라이즈 실습하기 질문드립니다.

0

196

9

<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.

0

97

2

크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.

0

113

2

구매 결제관련 질문입니다 !

0

123

1

다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제

0

134

2

node 설치 방법이 전혀다르게 바뀐것 같습니다.

0

152

2

12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류

0

122

2

무료/프리미엄 동시 소유 시 질문

0

117

1

비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?

0

135

2

10강 cors에러 localhost:4000으로 접속했을때 에러

1

159

2

webstorm 해결할 수 없는 변수 문제

0

155

2

혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?

0

149

2

LightSail 실행 중 오류 질문드립니다!

0

204

2

RedisStore 사용법 질문

0

133

2