gpt4 book ai didi

sequelize.js - 是否可以使用 sequelize 中的钩子(Hook)获取插入的行 ID?

转载 作者:行者123 更新时间:2023-12-03 22:19:42 25 4
gpt4 key购买 nike

我想为每个订单生成唯一的订单号。我正在尝试将创建的订单 ID 嵌套在订单号内。
docs 中描述了 sequelize 中的钩子(Hook)。 .
是否可以使用这些钩子(Hook)中的任何一个?
我用 beforeCreate()beforeUpdate()在保存之前对密码进行哈希处理。

'use strict';
module.exports = (sequelize, DataTypes) => {
const Order = sequelize.define('Order', {
buyer_id: DataTypes.INTEGER.UNSIGNED,
order_status_code: DataTypes.TINYINT.UNSIGNED,
order_detail: DataTypes.TEXT,
order_date: DataTypes.DATE
}, {
hooks: {
beforeSave: function(order, options) {
order.order_number = order.order_id + "UNIQUE"
}
}
});
Order.associate = function(models) {
// associations can be defined here
Order.hasOne(models.OrderItem,{foreignKey: "order_id"})
};
return Order;
};

更新
我尝试了以下方法,但它不起作用。 Hook 正在运行,但行未更新。
    module.exports = (sequelize, DataTypes) => {
const Order = sequelize.define('Order', {
buyer_id: DataTypes.INTEGER.UNSIGNED,
order_status_code: DataTypes.TINYINT.UNSIGNED,
order_detail: DataTypes.TEXT,
order_date: DataTypes.DATE
}, {
hooks:{
afterCreate: function(order, options) {
order.update({
order_number : 'OD' + Date.now + order.id + order.OrderItem.product_id + order.buyer_id
})
}
}
});
Order.associate = function(models) {
// associations can be defined here
Order.hasOne(models.OrderItem,{foreignKey: "order_id"})
};
return Order;
};

最佳答案

我尝试了下面的方法,我发现了很多可以在模型定义中完成的事情。

'use strict';
module.exports = (sequelize, DataTypes) => {
const Order = sequelize.define('Order', {
buyer_id: DataTypes.INTEGER.UNSIGNED,
order_status_code: DataTypes.TINYINT.UNSIGNED,
order_detail: DataTypes.TEXT,
order_date: DataTypes.DATE,
order_number: DataTypes.STRING(20)
}, {
hooks:{
afterCreate: async function(order, options) {
await order.update(
{
order_number : 'OD' + Date.now() + order.id + order.OrderItem.product_id + order.buyer_id
},
{
transaction: options.transaction
})
}
}
});
Order.associate = function(models) {
// associations can be defined here
Order.hasOne(models.OrderItem,{foreignKey: "order_id"})
};
return Order;
};

因此,当用户创建订单时。我使用事务将数据插入两个表中。这就是为什么我可以访问 order.OrderItem.product_id钩内。
但是如果你想访问任何其他模型,你总是可以使用 sequelize.models.YourModel我正在使用 asyncawait因为我也想要 order_number在回应中。我通过在钩子(Hook)中传递事务来实现这一点。如果有人找到更好的方法,请提出建议。

关于sequelize.js - 是否可以使用 sequelize 中的钩子(Hook)获取插入的行 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59675694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com