如何使用sequelize在beforeUpdate钩子中赋值或更新值



我正在尝试使用beforeUpdate钩子(实际上是beforeBulkUpdate)更新数据库实例,钩子被触发,但它不会更新值

这是我的更新实例

let order = await Order.update(
{
total_days: literal(`total_days + ${days}`),
},
{
where: { UserId, order_name },
}
);

我的钩子

beforeBulkUpdate(order, option) {
if (order.total_days > 2) {
order.discount = order.total_due * 0.15;
} else {
order.discount = 0;
}
order.tax = 0.1 * order.total_due;
order.total_due = order.total_due - order.discount + order.tax;
}

我做错了吗,还是不可能在beforeUpdate钩子上更新值?

在函数中设置值的方式是错误的。您需要使用序列化模型。setDataValue('field-name', value)函数。

beforeBulkUpdate(order, option) {
if (order.total_days > 2) {
order.setDataValue('discount', (order.total_due * 0.15));
} else {
order.setDataValue('discount', 0);
}
order.setDataValue('tax', (0.1 * order.total_due));
order.setDataValue('total_due', (order.total_due - order.discount + order.tax));
}

最新更新