본문 바로가기

Coding/내일배움캠프

[내일배움캠프] 트렐로 6일차 | Node.js 4기 | Day 79 | 24.03.23.(토)

1. Git 로컬 브랜치 삭제하기

 

git branch -d branch_name

 

2. Public key retrieval is not allowed.

 

- 오류 해결

 

3. request

 

const cookie = req.cookies['jwt'];

 

4. Error

 

- ERROR [ExceptionHandler] Nest can’t resolve dependencies of the RoleGuard
(Reflector, ?). Please make sure that the argument RoleStrategy at index [1]
is available in the CommentModule context.

- Potential solutions:
    - Is CommentModule a valid NestJS module?
    - If RoleStrategy is a provider, is it part of the current CommentModule?
    - If RoleStrategy is exported from a separate @Module, is that module imported
      within CommentModule?
@Module({
     imports: [ /* the Module containing
      RoleStrategy */ ]
})

 

5. 혹시 @Controller(‘/board/:boardId/column’)으로 되어있는 Column 컨트롤러의 함수에서 @Patch(‘/:columnId’)라고 메서드가 작성되어 있는 경우 API URL localhost:3000/board/:boardId/column/:columnId 되는 걸까요? 미친 디테일로 설명해주세요.

 

 

주말에도 친절히 질문 받아주시는 팀원 분들.. 감사합니다 🙏

 

 

6. TypeOrmModule.forFeature 메서드가 어떤 역할을 하고, 어떤 용도로 사용되는지에 대해서 미친 디테일로 설명해줬으면 좋겠어.

 

- TypeOrmModule.forFeature 메서드는 NestJS 애플리케이션에서 TypeORM과 함께 사용되는 기능 중 하나입니다.
  이 메서드는 특정 엔티티(데이터베이스 테이블과 매핑되는 클래스)를 현재 모듈의 컨텍스트에 등록하는 데 사용됩니다.
  이 메서드를 사용하면 해당 모듈에서 특정 엔티티를 사용할 수 있게 됩니다.
- 이 메서드는 주로 데이터베이스 작업을 수행하는 서비스나 리포지토리 클래스에서 사용됩니다.
  예를 들어, 데이터베이스 테이블에 접근하고 쿼리를 실행하는 서비스를 만들 때 해당 엔티티에 대한 리포지토리를
  주입받아야 합니다. TypeOrmModule.forFeature를 사용하여 해당 모듈에 엔티티를 등록하면 NestJS가
  이를 인식하고 필요한 곳에 자동으로 주입할 수 있습니다.
- 여기서 중요한 점은 forFeature 메서드를 사용하여 엔티티를 등록할 때, 그것이 현재 모듈의 컨텍스트에만
  적용된다는 것입니다. 따라서 다른 모듈에서는 해당 엔티티를 사용할 수 없습니다. 이는 모듈 간의 의존성을 관리하고
  모듈을 보다 격리된 형태로 유지하는 데 도움이 됩니다.

 

7. Reading table information for completion of table and column names. You can turn off this feature to get a quicker startup with -A

 

 

오류 메시지 "Reading table information for completion of table and column names.
You can turn off this feature to get a quicker startup with -A" 해결 방법
오류 메시지 "Reading table information for completion of table and column names.
You can turn off this feature to get a quicker startup with -A"는
SQL Server Management Studio(SSMS)에서 테이블 정보를 읽는 동안 발생하는 오류입니다.
이 오류는 여러 가지 원인이 있을 수 있으며, 해결 방법은 원인에 따라 다릅니다.

오류 발생 원인
1. 테이블 스키마 변경:

테이블 스키마가 최근 변경되었지만 SSMS 캐시가 업데이트되지 않은 경우
테이블 스키마가 손상된 경우

2. 네트워크 연결 문제:

SSMS 서버와 데이터베이스 서버 간의 네트워크 연결에 문제가 있는 경우
데이터베이스 서버가 중단된 경우

3. 권한 문제:

사용자가 테이블 정보에 대한 액세스 권한이 없는 경우

4. SSMS 설정 문제:

SSMS 설정이 올바르게 구성되지 않은 경우
해결 방법

1. SSMS 캐시 지우기:

SSMS 메뉴에서 쿼리 -> 쿼리 옵션 선택
쿼리 실행 전 탭에서 결과 캐시 사용 옵션 선택 해제
확인 클릭

2. 테이블 스키마 검사:

SSMS에서 테이블을 열고 스키마가 올바른지 확인
스키마 오류가 발견되면 수정

3. 네트워크 연결 확인:

SSMS 서버와 데이터베이스 서버 간의 네트워크 연결이 정상인지 확인
데이터베이스 서버가 실행 중인지 확인

4. 권한 확인:

사용자에게 테이블 정보에 대한 액세스 권한이 있는지 확인

5. SSMS 설정 확인:

SSMS 메뉴에서 도구 -> 옵션 선택
쿼리 실행 탭에서 테이블 및 뷰 이름 자동 완성 옵션 선택
확인 클릭

6. SSMS 재시작:

SSMS를 닫고 다시 시작

7. SSMS 재설치:

위의 방법으로 해결되지 않으면 SSMS를 재설치

8. SQL Server 로그 확인:

SQL Server 로그를 확인하여 오류 메시지 내용 확인
오류 메시지 내용에 따라 해결 방법 검색

9. 전문가 도움 받기:

위의 방법으로 해결되지 않으면 전문가에게 도움 요청

추가 정보
SSMS에서 테이블 정보 읽기를 비활성화하려면 -A 옵션을 사용하여 SSMS를 시작합니다.
SSMS 시작 옵션에 대한 자세한 내용은 Microsoft 문서: [유효하지 않은 URL 삭제됨] 참조하십시오.

참고:

이 문서는 참고용이며, 모든 상황에 적용되는 것은 아닙니다.
문제 해결 과정에서 어려움이 있다면 전문가에게 도움을 요청하십시오.

 

8. board 생성, 삭제 후 다시 생성하면 id가 1이 아니라 2가 되어버린다. autoincrement 문제 때문에 그런 것 같은데, 이러한 문제는 어떻게 해결하면 좋을까?

 

- 이 문제는 데이터베이스에서 자동으로 증가하는(auto-increment) 기능을 사용할 때 발생하는 것으로 보입니다.
  이는 보통 데이터베이스 테이블의 기본 키(primary key)에 해당하는 열에 대해 설정됩니다.
  각각의 새로운 레코드가 추가될 때마다 해당 열의 값이 자동으로 증가하도록 되어 있습니다.
- 이런 상황에서 보드를 삭제하고 다시 생성하면, 데이터베이스는 삭제된 보드의 기본 키 값을 다시 사용하지 않고,
  다음으로 증가된 값을 사용합니다. 따라서 보드를 다시 생성하면 이전에 삭제된 보드의 기본 키 값이 1이 아닌
  2가 되는 것입니다.
- 이러한 문제를 해결하는 방법은 데이터베이스의 자동 증가(auto-increment) 기능을 재설정하는 것입니다.
  주로 이를 위해서는 데이터베이스의 관리 도구나 스크립트를 사용하여
  해당 테이블의 auto-increment 값을 재설정합니다.
  이는 각 데이터베이스 시스템에 따라 조금씩 다를 수 있습니다.
- 일반적으로 데이터베이스에서는 auto-increment 값을 관리하기 위한 시퀀스(sequence)나
  자동 증가 칼럼(auto-increment column)을 관리합니다.
  예를 들어, MySQL에서는 다음과 같은 SQL문을 사용하여 auto-increment 값을 재설정할 수 있습니다.

 

ALTER TABLE your_table_name AUTO_INCREMENT = 1;

 

- 위의 SQL문을 실행하면 해당 테이블의 auto-increment 값이 1로 재설정됩니다.
- 따라서 문제를 해결하기 위해서는 해당 데이터베이스 시스템에 맞는 방법으로
  테이블의 auto-increment 값을 재설정하면 됩니다.
  이렇게 하면 보드를 다시 생성할 때 기본 키 값이 1부터 다시 시작될 것입니다.

 

9. DBeaver 데이터베이스 ERD 확인 가능

 

 

몰랐는데 DBeaver에서 현재 작업 중인 데이터베이스의 ERD를 확인할 수 있네요! 의도한 대로 데이터베이스 관계가 잘 구성되었는지 확인하면서 개발하시면 조금 더 수월하게 작업하실 수 있을 듯하여 공유합니다!

DBeaver에서 ERD 확인하는 방법은 아래 블로그 게시글 참고하시면 되시고, 다른 DB 관리 툴에서 ERD 확인하는 방법은 한번 찾아보시면 좋을 듯합니다~

 

https://jin2rang.tistory.com/entry/DBeaver-ERD-%EB%B3%B4%EA%B8%B0

 

DBeaver ERD 보기

DBeaver에서 테이블간의 ERD를 확인할 수 있다. DBeaver에서 데이터베이스를 우클릭 > View Database 클릭! Properties와 엔티티 관계도라는 메뉴가 있는데, 여기서 엔티티 관계도를 누르면 ERD를 확인할 수

jin2rang.tistory.com

 

9. Entity metadata for Card#comments was not found. Check if you specified a correct entity object and if it's connected in the connection options.

 

 

 

좌측이 card.entity.ts, 우측이 comment.entity.ts

 

좌측에서는 card와 comment가 onetomany로 연결되어 있고,

우측에서는 comment와 card가 manytoone으로 연결되어 있으므로,

개의 연관관계가 적절하게 구현되었음을 있다.