Я хочу рассчитать разницу в часах перед сохранением модели. Я пробовал beforeUpdate (и другие крючки), но поле никогда не вычисляется. Я также попробовал параметр set:, но это тоже не работает.Зафиксировать значение вычисления перед сохранением
У меня есть поля 'begin_at' и 'finished_at'. Если end_at не является нулевым, тогда выведите разницу и сохраните в полевые часы.
Я пробовал:
hours: {
type: DataTypes.DECIMAL(10,2),
allowNull: true,
set: function(){
var duration = 0;
if(this.ended_at){
var Start = moment(this.started_at);
var End = moment(this.ended_at);
duration = End.diff(Start, 'hours', true);
}
this.setDataValue('hours', duration);
}
},
И я попробовал:
beforeCreate: function(travel_log, options, fn){
if(travel_log.ended_at){
var Start = moment(travel_log.started_at);
var End = moment(travel_log.ended_at);
travel_log.hours = End.diff(Start, 'hours', true);
}
fn(null, travel_log)
},
без какого-либо успеха. Документация также не очень полезна. Может ли кто-нибудь помочь? Thx
Не уверен, если я понял, что вы сомневаетесь, но вы можете создать пользовательский экземпляр, и вы измените его модель, а затем сохраните. [building-a-non-persistent-instance] (http://sequelize.readthedocs.org/en/latest/docs/instances/#building-a-non-persistent-instance) – dege
Я бы хотел, чтобы модель всегда вычисляла разность end_at и start_at, а затем сохранить его в модели (db). – Tino