> 웹 프론트엔드 > JS 튜토리얼 > 내 Sequelize 모델 연결 열이 생성되지 않는 이유는 무엇입니까?

내 Sequelize 모델 연결 열이 생성되지 않는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-29 17:42:15
원래의
928명이 탐색했습니다.

Why is my Sequelize model association column not being created?

Sequelize 모델 연관 열이 생성되지 않음: 문제 해결 및 솔루션

Sequelize를 사용하여 모델 간 연관을 생성할 때 새 열이 생성될 것으로 예상됩니다. 외래 키 제약 조건을 나타내기 위해 추가되어야 합니다. 그러나 일부 모델에서는 이 열이 생성되지 않는 경우가 있을 수 있습니다. 이 문제는 다양한 원인으로 인해 발생할 수 있으며 이에 대한 해결책을 찾아보고 제공할 것입니다.

원인: 모델이 함께 등록되지 않았습니다

연관을 올바르게 설정하려면 관련된 모든 모델이 관계는 하나의 중앙 위치에 함께 등록되어야 합니다. 그렇지 않으면 Sequelize가 필요한 외래 키 열을 제대로 정의하지 못할 수 있습니다.

해결책:

모든 모델 정의와 해당 연관을 Database.js와 같은 전용 파일입니다. 연관 프로세스를 용이하게 하기 위해 모든 모델이 순차적으로 등록되었는지 확인하십시오.

원인: 잘못된 모델 구성

Sequelize에서는 연관 정의에 특정 방법이 사용될 것으로 예상합니다. 구성이 잘못되거나 확립된 규칙에서 벗어나면 외래 키 열이 생성되지 않을 수 있습니다.

해결책:

연결 기능이 올바르게 정의되었고 외래 키가 foreignKey 속성으로 지정됩니다. 예:

User.associate = (models) => {
  User.belongsTo(models.Role, { foreignKey: 'role_id' });
};
로그인 후 복사

원인: 모델 이름 충돌

동일한 이름을 가진 모델이 이전에 정의된 경우 Sequelize에 문제가 발생할 수 있습니다. 이는 모델 정의를 복사하여 붙여넣거나 여러 프로젝트에서 코드를 재사용할 때 발생할 수 있습니다.

해결책:

혼동을 피하기 위해 각 모델에 고유한 이름이 있는지 확인하세요. 중복된 모델의 이름을 바꾸거나 별도의 파일로 이동하세요.

예제 코드:

다음 코드는 모델 등록 및 연관 정의에 대한 통합 접근 방식을 보여줍니다.

// database.js
const models = path.join(__dirname, 'models');

const registerModels = async (sequelize) => {
  const modelFiles = fs.readdirSync(models).filter((file) => file.endsWith('.js'));

  for (const file of modelFiles) {
    const model = await import(path.join(models, file));
    await model.model(sequelize);
  }

  // Define model associations
  Object.keys(sequelize.models).forEach((modelName) => {
    if (sequelize.models[modelName].associate) {
      sequelize.models[modelName].associate(sequelize.models);
    }
  });
};
로그인 후 복사

이 접근 방식에는 모든 모델을 동적으로 등록하고 중앙에서 연관을 정의하는 작업이 포함됩니다. Sequelize가 외래 키 열을 적절하게 생성하고 필요한 관계를 설정할 수 있도록 보장합니다.

위 내용은 내 Sequelize 모델 연결 열이 생성되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿