2023-07-06 TIL (정예반 4차 강의 수강 및 5차 강의 복습)

오준석·2023년 7월 8일
0

TIL (Today I Learned)

목록 보기
38/105

<정예반 4차 강의>

잘게 세분해서 기능 구현한다.

<put으로 수정하기>

// case 1. splice로 수정하기
app.put("/posts/:id", (req, res) => {
  // 수정하고 싶은 게시글 ID
  const id = req.params.id;
  // 변경 내용을 받음
  const { user, title, contents } = req.body;
  // console.log(req.body);

  // id 에 해당하는 글을 posts 찾음
  const post = posts.find((post) => `${pos t.id}` === id);
  const index = posts.findIndex((post) => `${post.id}` === id);
  posts.splice(index, 1, {
    ...post,
    user,
    contents,
	    title,
	});

  res.send("수정이 된거니?");
});

// case 2. 정석?으로 수정하기 
app.put("/posts/:id", (req, res) => {
  // 수정하고 싶은 게시글 ID
  const id = req.params.id;
  // 변경 내용을 받음
  const { user, title, contents } = req.body;
  // console.log(req.body);

  // id 에 해당하는 글을 posts 찾음
  const post = posts.find((post) => `${post.id}` === id);

  post.user = user;
  post.title = title;
  post.contents = contents;
  const index = posts.findIndex((post) => post.id === id);
  posts[index] = post;
  res.send("수정이 된거니?");
});

// case 3. for문으로 수정하기
app.put("/posts/:id", (req, res) => {
  // 수정하고 싶은 게시글 ID
  const id = req.params.id;

  const { user, title, contents } = req.body;
  for (let i = 0; i < posts.length; i++) {
    if (posts[i].id === Number(id)) {
      posts[i].user = user;
      posts[i].title = title;
      posts[i].contents = contents;
    }
  }
  res.send("수정이 된거니?");
});

case 3. for 문으로 하게 되면 시간 복잡도가 늘어나서 좋지 않은 코드이다.

ex) 5만 개가 있다면 for문으로 하게 되면 2번째 항목을 찾아서 수정해도 5만 개를 다 돌림.

find는 찾는 즉시 (2번째라면) 반복문 종료

DB란?
데이터를 관리하는 프로그램

어떤 기능에 대해 폴더를 분류하거나 이름을 통일해서 짓는 걸 ‘패턴’이라고 한다.

<정예반 5차 강의 복습>

IP
인터넷에 연결된 컴퓨터의 주소

127.0.0.1 → 내주소 → domain // localhost

요청자 : 다른 프로그램.

<Node.js 심화주차>

웹소켓(WebSocket)
실시간 웹 서비스를 제공하기 위해 만들어진 Socket.
여러 협업툴이라고 보면 된다. 구글 독스, 노션 등


MySQL 명령문

posts라는 DB와 posts라는 테이블을 만드는 가정

  • create database posts;
  • SHOW DATABASES;
  • use posts;
  • CREATE TABLE posts (
    id INT AUTO_INCREMENT,
    user VARCHAR(256) NOT NULL,
    title VARCHAR(256) NOT NULL,
    contents VARCHAR(256) NOT NULL,
    createdAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
    );
profile
개발자를 목표로 열심히 하려고 합니다.

0개의 댓글