BaGyun
빠균's 개발노트
BaGyun
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • Today I Learned (44)
      • 오류 (8)
      • JavaScript (15)
      • TypeScript (9)
      • NodeJS (0)
      • NestJS (0)
      • Database (3)
      • ORM (1)
      • 알고리즘 (2)
      • 개인공부 (4)
      • Deploy (0)
      • Git (1)
    • 개인프로젝트 (4)
    • 알고리즘 (14)
      • 프로그래머스 (14)
    • 면접질문 (5)
    • 회고 (3)

인기 글

반응형

블로그 메뉴

  • 홈
  • 태그
  • 방명록
hELLO · Designed By 정상우.
BaGyun

빠균's 개발노트

Today I Learned/오류

[Error] sequelize-auto를 사용했을 때, initModels파일로 테이블들을 Join할 때 마주하는 오류

2022. 7. 8. 16:47

어떤 에러인가요?

initModels 파일을 이용하여 table join을 할 때,
as 키워드를 알맞게 넣지 않았을 때 발생하는 오류입니다.

 

에러 메세지

Shop is associated to User using an alias.
You must use the 'as' keyword to specify the alias within your include statement.

Shop은 가명을 사용하여 User와 연결된다.
포함 문에 별칭을 지정하려면 'as' 키워드를 사용해야 합니다.
User is associated to Shop using an alias.
You've included an alias (Users),
but it does not match the alias(es) defined in your association (user).

User는 가명을 사용하여 Shop와 연관된다.
별칭('Users')을 포함했지만 연결에서 정의된 별칭(user)과 일치하지 않습니다.

에러 핸들링 방법

// init-models.js
Shop.belongsTo(User, { as: 'user', foreignKey: 'user_id' });  //자식
User.hasMany(Shop, { as: 'Shops', foreignKey: 'user_id' });  //부모

Menu.belongsTo(Shop, { as: 'shop', foreignKey: 'shop_id' });  //자식
Shop.hasMany(Menu, { as: 'Menus', foreignKey: 'shop_id' });  //부모

// controllers
await Models.Shop.findOne({
      include: [
        {
          model: Models.User,
          as: 'user',
          attributes: [
            'shop_name',
            'shop_category',
            'shop_category_city',
            'master_address',
          ],
        },
        {
          model: Models.Menu,
          as: 'Menus',
          attributes: ['image_src', 'menu_category', 'name', 'price'],
        },
      ],
      attributes: [
        'business_hour',
        'image_src',
        'phone_number',
        'holiday',
        'map',
        'contents',
      ],
    });

위 코드처럼 작성의 시작이 되는 테이블을 기준으로,
부모 또는 자식을 부르고 싶을 땐 자신의 as 키워드를 사용해준다.

 

'Today I Learned > 오류' 카테고리의 다른 글

[Error] Cannot use import statement outside a module  (0) 2022.08.05
[Error] 서버 실행 시 발생하는 에러  (0) 2022.07.08
[Error] sequelize-auto를 사용 했을 때, associate 지정을 따로 해주지않고 사용하는 법  (0) 2022.07.08
[Error]Access to XMLHttpRequest at '주소A' from origin '주소B' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.  (0) 2022.07.08
[Error] reading "config/config.js". Error: ReferenceError: dotenv is not defined  (0) 2022.07.08
    'Today I Learned/오류' 카테고리의 다른 글
    • [Error] Cannot use import statement outside a module
    • [Error] 서버 실행 시 발생하는 에러
    • [Error] sequelize-auto를 사용 했을 때, associate 지정을 따로 해주지않고 사용하는 법
    • [Error]Access to XMLHttpRequest at '주소A' from origin '주소B' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    BaGyun
    BaGyun

    티스토리툴바