혼자 고민해보기_ 개발/TIL (Today I Learned)

20230615(목)_노드 JS 입문 과제 완료

nuri-story 2023. 6. 15. 22:24

금일 달성 항목

1)  노드JS 입문 강의 과제 완료


문제 해결 과정 1  - 댓글 schema에 postid 생성

[문제]

댓글 목록 조회 코드를 짜다가 각각의 게시글에 맞는 댓글이 들어가는 구조가 필요하다는 것을 깨달았는데, 그럴경우 어떻게 해야하는지 고민했습니다.

 

 

[시도]

처음에는 스키마끼리 연결하여 사용하는 것을 생각했는데 코드조각으로 되어있어 어디에 어떻게 넣어야하는지 가늠이 안잡혔다.

https://inpa.tistory.com/entry/ODM-%F0%9F%93%9A-%EB%AA%BD%EA%B5%AC%EC%8A%A4-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%A0%95%EB%A6%AC

 

[ORM] 📚 Mongoose 사용법 정리 (Node.js - MongoDB)

Mongoose 모듈 몽구스(mongoose)는 시퀄라이즈와는 달리 릴레이션이 아닌 도큐멘트를 사용하므로 ORM이 아니라 ODM (Object Document Mapping) 이라고 불린다. 몽구스는 노드 프로젝트에서 몽고디비를 다루기

inpa.tistory.com

 

[해결]

튜터님에게 설명드리니 comment영역에 postid에 맞는 댓글을 생성하게끔 코드를 짜면된다고 하셨습니다. 즉, 처음 Post 생성할때부터 postid가 있으면 되는 것이었습니다! 그래서 commet 스키마에 고유한 post아이디를 추가하였습니다.

const mongoose = require("mongoose");

const commentsSchema = new mongoose.Schema({
    postId:{
      type: mongoose.Schema.Types.ObjectId,
      required: true,
    },
    user: {
      type: String,
      required: true,
    },
    password: {
        type: String,
        required: true,
      },
    content: {
        type: String,
        required: true,
    }
  });


module.exports = mongoose.model("Comments", commentsSchema);

또한 댓글 목록을 조회할때 param에서 postId를 가져와 조회하도록 코드를 짰습니다.

router.get("/comments/:postId", async (req, res) => {
  const { postId } = req.params;
  const data = await Comments.find({ postId });

  if (!data) {
    return res
      .status(400)
      .json({ message: "댓글이 존재하지 않습니다." });
  }

  res.status(200).json({ data });
});

 

[알게된 점]

생각보다 우리가 쓰는 많은 곳에서 쓰인다는 것을 인지하니 구조이해가 쉬웠습니다. 게시글이 있으면 게시글에 맞는 댓글이 있는 것이 당연한 것이니까요. 일상에서 개발에 필요한 요소들을 고민하는 공부가 필요하다 생각했습니다.


문제 해결 과정 2  - ubuntu 3000포트  킬하기

[문제]

서버 생성 후 처음에 api연결고리에 /api를 넣어놓아서 localhost를 확인할때마다 아래와같이 경로가 생겨서 '변경'과 같이 수정해서 서버를 재 배포를 하려는데 ubuntu에서 자꾸만 이미 3000번 포트가 실행되고 있다는 경고창이 자꾸만 떴습니다.

 

이전

localhost:3000/api/posts
app.use(express.json());
app.use("/api", [postsRouter, commentsRouter]);

 

변경

localhost:3000/posts
app.use(express.json());
app.use("/", [postsRouter, commentsRouter]);

 

 

[시도]

https://velog.io/@jemmajeon/%EC%9A%B0%EB%B6%84%ED%88%ACUbuntu%EC%97%90%EC%84%9C-git-clone%ED%95%9C-%ED%8F%B4%EB%8D%94-%EC%82%AD%EC%A0%9C

 

우분투(Ubuntu)에서 git clone한 폴더 삭제

우분투(Ubuntu)로 AWS Lightsail server를 오픈했다.git init 으로 로컬 git을 초기화하지 않은 상태에서, git clone 으로 디렉토리를 불러왔는데, 현재는 업데이트로 인해 다른 걸로 대체해야하는 상황. 우분

velog.io

clone한 깃허브를 삭제하고 시도할때마다 다시 경고창이 생성되었습니다.

 

튜터님께서 우분투 안에서 노드를 실행해서 포트를 3001으로 수정하여도 해결이 되지 않았습니다.

우분투에서 포트를 kill하는 모든 방법을 구글링하여 시도했는데 되질 않았습니다.

https://iu-corner.tistory.com/entry/%EB%A7%A4%EB%B2%88-%ED%95%98%EB%8A%94%EB%8D%B0-%EB%8A%98-%EA%B9%8C%EB%A8%B9%EB%8A%94-Ubuntu-%EC%8B%A4%ED%96%89%EC%A4%91%EC%9D%B8-%ED%8F%AC%ED%8A%B8-%EC%A3%BD%EC%9D%B4%EA%B8%B0

 

매번 하는데 늘 까먹는 Ubuntu 실행중인 포트 죽이기

세가지만 기억하세요! # 실행중 포트 확인 netstat -tnlp # 포트번호로 죽이기 sudo fuser -k 80/tcp # pid번호로 죽이기 sudo kill -9 pid번호 netstat -tnlp sudo fuser -k 80/tcp

iu-corner.tistory.com

 

[해결]

뭔가 aws와 포트가 꼬인 것 같았습니다. 아무리 시도해도 kill되지 않아서 그냥 aws인스턴스를 새로 생성하고 다시 만들었습니다 ㅎ

 

[알게된 점]

처음부터 차근차근 다시하는게 더 빠르기도 한 것 같습니다.