inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Node.js 교과서 - 기본부터 프로젝트 실습까지

게시글 업로드 구현하기

async await

해결된 질문

239

summer

작성한 질문수 13

0

routes/page.js 파일에서

//메인페이지
router.get('/', (req, res, next) => {
Post.findAll({
include: {
model: User,
attributes: ['id', 'nick'],
},
order: [['createdAt', 'DESC']],
})
.then( (posts) => {
res.render('main', {
title: 'NodeBird',
twits: posts,
user: req.user,
loginError: req.flash('loginError'),
});
})
.catch ( (error) => {
console.error(error);
next(error);
});
});

이부분을 async로 바꾸고 싶어서..

router.get('/', async (req, res, next) => {
  try {
    const posts = await Post.findAll({
      include: {
        model: User,
        attributes: ['id', 'nick'],
      },
      order: [['createdAt', 'DESC']],
    });
  
   res.render('main', {
        title: 'Nodebird',
        twits: posts,
        user: req.user,
        loginError: req.flash('loginError'),
    });
  } catch (err) {
    console.error(err);
    next(err);
  }
});

이렇게 했는데...맞게 바꾼건가요?

await가 붙으면 작업이 끝날 때까지 기다린다는 의미라서 posts에 값이 담길 때까지 기다리고

담긴 후에 render가 실행된다는 의미 맞을까요?

제가 비동기 부분에 대한 이해가 좀 부족한것 같네요 ㅠㅠ

===========================================

아, 그리고 추가적으로

routes/post.js 에서

router.get('/hashtag', async (req, res, next) => {
const query = req.query.hashtag; //사용자가 검색하고자 하는 것
if (!query) { //아무것도 입력 안하면
return res.redirect('/');//기본페이지로
}
try {
const hashtag = await Hashtag.findOne( { where: { title: query }});
let posts = [];
if (hashtag) {//찾은 것이 있으면
posts = await hashtag.getPosts({ include: [{ model: User }]});//다대다관계 가져오면서, 사용자까지 넣어서 가져옴
}
return res.render('main', {
title: `${query} | NodeBird`,
user: req.user,
twits: posts,
});
} catch (error) {
console.error(error);
next(error);
}
});

마지막에 render하시면서 return을 붙이시던데, 특별한 이유가 있으신건가요?

mysql javascript mongodb nodejs

답변 1

0

제로초(조현영)

맞게 바꾸셨습니다.

await을 할 때는 if문을 자주 쓰게 돼서 가끔씩 res.render이나 res.json이 한 라우터에 여러 번 등장하게 됩니다. 그 때 return 안 붙여주면 에러가 나게 되는데, 어떠한 경우에도 에러나지 않도록 습관을 들인 겁니다.

실제 서비스에서도 cluster를 사용하나요?

1

313

2

캐싱에 관하여

0

279

3

salt를 실무에서 사용할때 항상 randomBytes로 만들어줘야 하나요?

0

347

1

게시물 올리기 오류

0

408

1

캐슁 이후 로그인창

0

266

1

kakao passport 질문있습니다.

0

493

3

global객체 공유 질문드립니다.

1

418

1

서버가 죽어버리네요

0

1047

8

포링키 문제..

0

235

2

커넥션 플래시 설치문제

0

216

2

익스프레스 제너레이터? 설치문제

0

2586

6

redis 질문입니다.

0

305

1

9장 세션을 DB에 저장시 리다이렉션 오류 발생

0

874

8

프레임워크 선택에 관하여 질문이 있습니다.

0

300

3

시퀄라이즈 질문입니다 ! !

0

588

1

리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문

0

922

6

oAuth 질문입니다.

0

356

3

GCP 질문입니다.

0

366

1

Passport 모듈 로그인 구현관련

0

720

6

카카오 로그인 관련 질문입니다!!

0

606

4

스스로 해보기 10-16 nunjuncks 질문있습니다

0

499

5

제로초님 HTTP 완벽가이드 추천해주신거 너무 잘 읽었습니다.

0

317

2

gif채팅방 nunjucks관련 질문입니다!

0

338

3

현영님 몽고db관련 질문입니다.

0

233

3