2022-05-17(화) TIL

황인호·2022년 6월 7일
0

TIL 모음

목록 보기
53/119

오늘해야할일들

  • 인프런 강의 듣기 [2개째 듣는중]

  • 알고리즘 문제풀이

  • 제로초 자바스크립트 영상1개 보기 [3개 시청함]

  • socket.io test 및 적용해보기 [실패~!]

  • 마이페이지-테스트페이지 api 작성 [완료]

  • 상세페이지를 위한 데이터 테이블 만들기 [완료]

  • 상세페이지 챌린지 참여한 사용자 리스트 api 작성 [완료]

  • 상세페이지 테이블 중첩하기 [완료]

  • 제로초 강의

    프로그래밍 사고력 : 알고리즘 = 순서도를 잘 그릴줄알아야한다.

    순서도를 그리는 이유 = 단순히 문법만배워서는 프로그램을 만들수없다.

인프런 강의

const express = require('express');
const cookieParser = require('cookie-parser');
const morgan = require('morgan');
const path = require('path');
const session = require('express-session');
const nunjucks = require('nunjucks');
const dotenv = require('dotenv');
const passport = require('passport')

dotenv.config();
const pageRouter = require('./routes/page');
const authRouter = require('./routes/auth');
const {sequelize} = require('./models')
const passportConfig = require('./passport')

const app = express();
passportConfig() //패스포트 설정
app.set('port', process.env.PORT || 8001);
app.set('view engine', 'html');
nunjucks.configure('views', {
  express: app,
  watch: true,
});
sequelize.sync({force:false}) //sync는 promise이기때문에 .then , catch를 붙여서 성공인지 오류인지를 확인하면 좋다
    .then(()=> {
        console.log('데이터베이스 연결 성공')
    })
    .catch((error)=> {
        console.error(err)
    })

app.use(morgan('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(session({
  resave: false,
  saveUninitialized: false,
  secret: process.env.COOKIE_SECRET,
  cookie: {
    httpOnly: true,
    secure: false,
  },
}));
//세션 아래에 위치해야한다.
app.use(passport.initialize())
//해당부분이 실행되면 ./passport/index.js가 실행된다.
app.use(passport.session())

app.use('/', pageRouter);
app.use('/auth', authRouter);

//404 처리 미들웨어
app.use((req, res, next) => {
  const error =  new Error(`${req.method} ${req.url} 라우터가 없습니다.`);
  error.status = 404;
  next(error);
});

//500 에러 미들웨어
app.use((err, req, res, next) => {
  res.locals.message = err.message;
  res.locals.error = process.env.NODE_ENV !== 'production' ? err : {};
  res.status(err.status || 500).render('error');
});

//서버 실행
app.listen(app.get('port'), () => {
  console.log(app.get('port'), '번 포트에서 대기중');
});
  • sequelize 사용 후기?? / api만들기 sequelize tables 중첩하기 두개의 테이블이 있고 테이블의 이름은 Challenge , ChallengeJoin이다. 이 두개의 테이블을연결해서 데이터를 가져오고싶었다.
일반적으로 흔히사용하는 sequelize 중첩하는 코드
ex)예제 코드
const user = await User.findOne({
	include: [{
		model:Comment, model:Challenge
	}]
})
User 테이블과 Comment 테이블을 중첩한 내용이다.
profile
성장중인 백엔드 개발자!!

0개의 댓글