Javascript Sequelize.js setter函数未按预期工作
在Sequelize js模型属性上使用setter函数时遇到问题 我想做的是,当一个属性被赋予一个值时,同时使用该值填充表中的另一个属性 在我的模型中,这是我对相关属性的代码Javascript Sequelize.js setter函数未按预期工作,javascript,node.js,database,orm,sequelize.js,Javascript,Node.js,Database,Orm,Sequelize.js,在Sequelize js模型属性上使用setter函数时遇到问题 我想做的是,当一个属性被赋予一个值时,同时使用该值填充表中的另一个属性 在我的模型中,这是我对相关属性的代码 date_time_paid: { type:DataTypes.DATE, set(val) { const date = new Date(val); this.setDataValue('date_time_paid', val); // set the the current prope
date_time_paid: {
type:DataTypes.DATE,
set(val) {
const date = new Date(val);
this.setDataValue('date_time_paid', val); // set the the current property
this.setDataValue('month_paid', `${date.getFullYear()}-${(date.getMonth() + 1)}`); //also set another property on the same row
},
},
我期望的是,date\u time\u paid
列存储原始值,month\u paid
列存储从中派生的字符串。但是当我运行seeder用测试数据填充表时,month\u paid列的值仍然为空
我想你需要一个有活力的人。忘记支付的日期和时间,为支付的月份做一个getter:
get month_paid(){
const date = new Date(this.date_time_paid);
return `${date.getFullYear()}-${(date.getMonth() + 1)}`;
}
谢谢,这可能行得通,但不幸的是,这不是我需要的:Sequelize不是查询数据库的唯一方法。。。其他地方也需要同样的信息。另外,据我所知,如果您在查询中使用
raw:true
标志,那么getter将不起作用,我需要这样做,因为在某些情况下,我期望结果集的大小。对,您尝试过setterMethods
。不过我不知道有什么不同,除了属性中定义的setter采用precenceso之外,我认为这里的代码是正确的,但问题是我在播种器中使用bulkInsert
方法填充数据库表的方式。这似乎跳过了模型创建阶段,因此不会应用setter。