1

Ich benutze Sequelize.js und muss historische Daten bis zu einem bestimmten Jahr speichern und meine Tabellen nach Jahr Präfix zum Beispiel prices_2010, prices_2011 z. kann ichÄndern des Tabellennamens des Modells Laufzeit

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

für die einzelne Jahre Tabelle so erstellen und diesen Namen für die Tabelle verwenden, aber was ist, wenn ich von 2015 Jahren speichern oder Abfragedaten und will Modelle anstelle von Roh-Abfragen verwenden. Also wie kann ich die Laufzeittabelle ändern. etwas wie changeTable() Methode Sequelize.

Antwort

1

Sie sollten nie irgendwelche Informationen wie Jahre als Tabellennamen seit seinen Daten speichern. Sie sollten sie als separate Tabelleneinträge als tatsächlich verwendbare Daten speichern.

ändern company_historical_<year> nur company_historical und eine neue Tabelle company_historical_years genannt erstellen, die nur die möglichen Jahren alle Firma Historische Einträge haben kann, hat.

Erstellen Sie dann eine Beziehung zwischen dem Gesellschaft Historischen Eintrag und der damit verbundenen Firma historcal Jahre Eintrag.

So etwas wie:

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); 
     } 
    } 
}; 

und dann können Sie es abfragen mit:

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

dies wird Ihnen einen einzigen CompanyHistoricalYears Eintrag und alle CompanyHistorical Einträge, die in diesem Jahr.

Wenn dies nicht sinnvoll ist, dann zögern Sie nicht, bei Fragen zu kommentieren.

Verwandte Themen