[내일배움캠프] 트렐로 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으로 연결되어 있으므로,
두 개의 연관관계가 적절하게 구현되었음을 알 수 있다.