1

Sequelize.js를 사용하고 있으며 특정 연도까지 내역 데이터를 저장해야하며 연도 접두어 (예 : prices_2010, prices_2011)으로 내 표를 분리해야합니다. 나는 현재 년 테이블 그래서모델의 테이블 이름 런타임을 변경하십시오.

tableName:"company_historical_" + new Date().getFullYear(); 

를 만들 수 있습니다 내가 저장할 또는 2천15년의 쿼리 데이터 및 원시 쿼리 대신 모델을 사용하려는 경우이 테이블의 이름,하지만를 사용합니다. 그래서 어떻게 테이블 사용 런타임을 변경할 수 있습니까? changeTable()와 같은 방법이 후유증을 유발합니다.

답변

1

데이터 이후로 테이블 이름으로 연도와 같은 정보를 절대로 저장하지 마십시오. 실제 사용할 수있는 데이터와 같이 별도의 테이블 항목으로 저장해야합니다.

변경 company_historical_<year>company_historical 단지 회사 역사 항목이 가질 수있는 가능한 모든 년을 가지고 company_historical_years라는 새 테이블을 만들 수 있습니다.

그런 다음 회사 역사 항목과 관련 회사 Historcal 년 항목 간의 관계를 만들 수 있습니다.

그래서 같은 :

var CompanyHistoricalYears = sequelize.define('company_historical_years', { 
    year: { 
     type: Sequelize.INTEGER 
    }, 
    classMethods: { 
     associate: function (models) { 
      CompanyHistoricalYears.hasMany(models.CompanyHistorical); 
     } 
    } 
}; 


var CompanyHistorical = sequelize.define('company_historical', { 
    ... 
    classMethods: { 
     associate: function (models) { 
      CompanyHistorical.belongsTo(models.CompanyHistoricalYears); 
     } 
    } 
}; 

한 다음 그것을 조회 할 수 있습니다

CompanyHistoricalYears.findOne({ 
    where: { 
     year: 2011, // or you can use "new Date().getFullYear()" 
    }, 
    include: [CompanyHistorical] 
}); 

이 당신에게 그 해 내에있는 하나의 CompanyHistoricalYears 항목 모든 CompanyHistorical 항목을 제공 할 것입니다.

이 내용 중 이해가되지 않는 부분이 있으면 언제든지 문의하십시오.

관련 문제