1

Sequelize.jsを使用しているため、過去のデータを特定の年まで保存し、年の接頭辞でテーブルを分割する必要があります たとえばprices_2010、prices_2011 私は現在の年テーブルのためにそうモデルのテーブル名のランタイムを変更してください

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

を作成することができますし、私は2015年のデータを保存またはクエリにしたいし、代わりに生のクエリのモデルを使用したい場合には、テーブルのために、この名前を使用しますが、何だろう。 テーブルの使用時間を変更するにはどうしたらいいですか? 何か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エントリと、その年の範囲内にあるすべてのCompanyHistoricalエントリを与える

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

これ以外の場合は、質問をしてください。

関連する問題