원래 코드의 상태
분명 class 변수로 bulletinBoard를 추가하였는데, 코드를 실행시켰을때, loadPostList함수내에서 자꾸 this.bulletinBoard에서 Cannot read properties of undefined에러가 났다.
지정이 제대로 안된것인가 싶어서 생성자에서 console.log()를 찍어본 결과 잘 실행이 되었다.
typedi에 대해 잘 모르기때문에 Container에서 에러가 난것인가해서 bulletinBoard모델에서도 테스트한 결과 이상이 없었다.
결국 계속 웹서핑하다 해결이 안돼서 chatGPT에게 물어보았다.
전혀 생각지도 못한 경우였다. arrow function과 일반 Function의 차이점을 몰랐기 때문에 생긴 에러였다.
class내의 arrow function과 일반 function의 this.는 불러오는 객체가 차이가 있었다.
내가 Cannot read properties of undefined 에러가 생긴 이유는, 다른 객체에서 bulletinboardController.loadPostList를 실행시키기 때문에 일반 function으로 작성하여 This.이 bulletinboardController에있는 bulletinBoard 모델을 불러오지 못했던 것이었다.
다른 코드에서 일반 function을 사용해도 에러가 나지 않았던 이유는 class내에서만 호출하는 private function이였거나, 아니더라도 다른 객체에서 호출한적이 없었어였다.
chatgpt가 알려준대로 arrow function으로 함수들을 바꿔주니 정상적으로 잘 작동하였다.
'Node.js express' 카테고리의 다른 글
passport와 express-session의 동작 절차 (0) | 2024.09.12 |
---|---|
[nginx, nodejs express] Express+nginx로 서버 열기 (0) | 2023.09.04 |
[Node.js express] LINE social login 구현 (passport 사용 x) (0) | 2023.08.10 |
[Node.js Error]fail to connect Error: ER_NOT_SUPPORTED_AUTH_MODE (0) | 2023.07.30 |
[Node.js Express] client가 보낸 사진 Sever에 받아오고 저장하기 -2 (MulterError : Unexpected field) (0) | 2023.07.15 |