我正在使用Sequelize.js,需要将历史数据保存到特定年份,并希望按年份前缀分隔我的表格 例如price_2010,prices_2011,例如 我可以创建
tableName:"company_historical_" + new Date().getFullYear();
对于当前年份表,它将使用此名称作为表,但如果我想存储或查询2015年的数据并希望使用模型而不是原始查询,该怎么办?
那么如何更改使用运行时表。
像changeTable()
方法sequelize。
答案 0 :(得分:1)
自从数据以来,您永远不应该将任何类型的信息存储为表名。您应该将它们存储为单独的表条目,作为实际可用的数据。
将company_historical_<year>
更改为company_historical
并创建一个名为company_historical_years
的新表格,其中包含公司历史条目可能具有的所有可能年份。
然后在公司历史条目与相关公司历年条目之间创建关系。
类似于:
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
条目。
如果不是这样,那么随时可以对任何问题发表评论。