6/16 TIL

이승준·2023년 6월 16일
0
post-thumbnail
post-custom-banner

express.js와 mongoDB로 만든 백엔드 서버 배포하기

코드

터미널로 ec2 데이터베이스 접근하기

  • moongod --version : 설치되어있는 몽고db 버전출력
  • mongosh : 몽고db 접속
  • show dbs : 데이터베이스 출력
  • use DB : 선택한 DB 사용
  • show collections : 컬렉션 출력
  • db.[collection].find() : 해당 컬렉션에 있는 내용물 출력

ec2로 app.js 실행시키기

  • ssh -i [생성된키] id@[ec2IP] : ec2로 접속
  • git clone [깃 레포지토리 주소] : 파일 클론
  • npm install : 어떤 파일로 인해 node_modules 폴더가 깔리는데 어떤 파일인지 잘 모르겠다.
  • node app.js : 파일실행

    이 외에 node.js, mongoDB 설치 ec2 보안그룹 설정 등 해야한다

오류 및 개념

[ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

: resposne가 2개 이상 왔을 시 오류가 나고 서버가 꺼진다

오류코드

if (
    existComments.length &&
    password === existComments[0].password &&
    content !== ""
  ) {
    await Comments.updateOne(
      { _id: commentId },
      {
        $set: {
          user,
          password,
          content,
          createdAt: Date(),
        },
      }
    );
    res.status(200).json({
      success: true,
    });
  } else if (content === "") {
    res.status(400).json({
      message: "댓글을 입력해주세요",
    });
  } 
    
res.status(404).json({
  message: "존재하지 않거나 비밀번호가 맞지 않습니다",
});

이처럼 조건문에 맞는 res를 전달하고 마지막에 있는 res를 또 전달할 경우
오류가 발생한다

else {
  res.status(404).json({
  message: "존재하지 않거나 비밀번호가 맞지 않습니다",
})
};

이처럼 else를 써서 이 부분은 오류가 안났지만 return 하여 아예 끝내버리는게 더 안전한 것 같다

해결코드

if (
    existComments.length &&
    password === existComments[0].password &&
    content !== ""
  ) {
    await Comments.updateOne(
      { _id: commentId },
      {
        $set: {
          user,
          password,
          content,
          createdAt: Date(),
        },
      }
    );
    return res.status(200).json({
      success: true,
    });
  } else if (content === "") {
    return res.status(400).json({
      message: "댓글을 입력해주세요",
    });
  } else{
    return res.status(404).json({
  message: "존재하지 않거나 비밀번호가 맞지 않습니다",
})
};
post-custom-banner

0개의 댓글