쿼리 실습

김무연·2023년 12월 20일

Backend

목록 보기
47/49

직접 mysql workbench 들어가서 db를 만들지 않고, 터미널에 ' npx sequelize db:create ' 로 db를 만들 수도 있다.

router.route('/')
  .get(async (req, res, next) => {
    try {
      const users = await User.findAll();
      res.json(users);
    } catch (err) {
      console.error(err);
      next(err);
    }
  })
  .post(async (req, res, next) => {
    try {
      const user = await User.create({
        name: req.body.name,
        age: req.body.age,
        married: req.body.married,
      });
      console.log(user);
      res.status(201).json(user);
    } catch (err) {
      console.error(err);
      next(err);
    }
  });
  • 위처럼 routes로 따로 분리를 해준 후 해당 주소로 get, post 등을 요청할 시 작동할 로직을 만들어 준다.

  • res로 응답 데이터를 보내줄 때, 문자만 보내줄 때는 res.send(), 파일을 보내줄 때 res.file(), 템플릿 엔진 렌더링 할 때는 res.render(), api 요청 시는 거의 res.json() 써 줌

  • api 요청은 거의 res.json()이라고 생각하면 됨

  • 또한 get 요청시 User테이블의 정보를 users에 담아서 render시에 두 번째 인자로 전달된 데이터는, 프론트 서버에서 해당 템플릿 파일을 렌더링할 때 사용할 수 있는 변수로 사용됨

router.get('/', async (req, res, next) => {
  try {
    const users = await User.findAll();
    res.render('sequelize', { users }); // 
  } catch (err) {
    console.error(err);
    next(err);
  }
        {% for user in users %}
        <tr>
          <td>{{user.id}}</td>
          <td>{{user.name}}</td>
          <td>{{user.age}}</td>
          <td>{{ '기혼' if user.married else '미혼'}}</td>
        </tr>
        {% endfor %}

위 처럼 front에서 render시에 넘겨준 user데이터 객체가 호출이 가능하다-

update중 put과 patch의 차이

put과 patch는 데이터를 업데이트한다는 점에서 일맥상통하다.

하지만 차이점은

PUT은 말 그대로 해당 데이터의 document를 새로 입력해준 document로 통으로 바꿔버리는 요청이고

PATCH는 filter로 찾은 데이터의 해당 부분만 수정해주는 요청이다.

예를 들면 휴대폰이 고장났을 때, 통으로 바꾸는 것이 PUT이고, 고장 난 부품만 바꾸는 것이 PATCH이다.

  .patch(async (req, res, next) => {
    try {
      const result = await Comment.update({
        comment: req.body.comment,
      }, {
        where: { id: req.params.id },
      });
      res.json(result);
    } catch (err) {
      console.error(err);
      next(err);
    }

위와 같은 patch 요청이 있을 때, comment만 바꾸게 적어놓았다. 하지만 이를 patch로 바꿀 시 comment 컬럼 뿐만이 아닌 모든 컬럼을 다 적어주어야 한다.

시퀄라이즈 로그

api를 작성하고, 요청을 보낼시 터미널에 해당 요청에 대한 로그가 출력된다.

이 로그는 JS로 작성된 시퀄라이즈 코드를 SQL로 문법으로 이렇게 작성된다는 뜻인데, ?가 있는 칸은 보안 상 안보이게 함

profile
Notion에 정리된 공부한 글을 옮겨오는 중입니다... (진행중)

0개의 댓글