Javascript 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

在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 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列的值仍然为空

  • 这是setter函数的正确用法吗
  • 如果是我做错了什么,那就意味着它不起作用了

  • 我想你需要一个有活力的人。忘记支付的日期和时间,为支付的月份做一个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。