coding/Error

외래키 설정

JIN_Coder 2022. 8. 14. 01:43

씨퀄라이즈로 관계형 DB를 만들어 사용하는데

마이그레이션으로 테이블을 만들고, 관계를 설정해주고,

모델을 기준으로 디비에 접근해서 데이터를 사용하는 것이라고 대략 개념을 잡았다.

 

관계 설정을 해줬으니 디비를 사용하면 바로 관계 맺은 데이터를 사용할 수 있는 줄 알았는데

데이터에 접근해보니

라는 오류가 생겼었다.

나는 userId라는 칼럼을 만들어서 외래 키로 사용하려고 했는데

쿼리문을 보니 UserUserId라는 칼럼을 찾을 수가 없다는 오류가 생겼다.

 

처음엔 뭐지.. 했는데

전에 비슷한 오류를 본 사람이 말해주기를 외래 키의 이름? 을 설정해주지 않으면 참조해주는 테이블과 칼럼을 토대로 임의로 이름을 지어주기 때문에 생기는 오류라고 했다.

 

그래서 모델에서 hasmany, belongsto 같이 관계 맺은 데이터를 사용하면 되는 줄 알았는데 이 코드에 외래 키의 이름까지 설정을 해주어야

모델을 통해서 외래 키를 제대로 설정하고, 사용할 수 있다고 했다.

 

// models/posts.js

static associate(models) {
    
      this.belongsTo(models.Users,{
        foreignKey: "userId",
        targetKey: "userId",
    });
      this.hasMany(models.Comments,{
        foreignKey: "postId",
        sourceKey: "postId",
    });
      this.hasMany(models.Likes,{
        foreignKey: "postId",
        sourceKey: "postId",
    });
    }

까지 해줘야 내가 원하는 userId라는 외래 키 칼럼이 만들어지기 때문에 잘 사용할 수 있었다.

'coding > Error' 카테고리의 다른 글

ERR_HTTP_HEADERS_SENT  (0) 2022.08.31
인스턴스 접속 에러  (0) 2022.08.19
함수의 {return }  (0) 2022.08.04
SyntaxError: Unexpected token } in JSON at position 67  (0) 2022.07.29
const castError = new CastError();  (0) 2022.07.29