gpt4 book ai didi

node.js - 如何在 sequelize 中存储模型实例上的其他信息?

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

假设我们有两个模型

const instance1 = Model1.create({id: 1, someInfo: "something important"});
const instance2 = Model2.create({id: 1});

// In another file.
Model2.addHook('beforeCreate', function (instance2, options){
// I want to access instance1 here.
})
现在,Model1 和 Model2 之间没有关联,并且 Model2 有一个 beforeCreate Hook ,我想在其中访问 instance1。这些创建操作也将使用事务。
哪个是实现这一点的正确方法?

最佳答案

因为options传递给钩子(Hook),您可以将其中一个属性设置为您的第一个实例。
这是设置钩子(Hook)的模型定义,从选项中获取您的自定义属性。

Model2.addHook('beforeCreate', async function(instance2, options){
const { details, transaction } = options;
const { instance } = details;
// `instance` will be the `instance1` you passed in
});
创建第一个实例后,您可以将其传递给选项中的第二个实例。如果您正在使用事务,您也希望将其传递,请注意,在事务提交之前,更新将无法在事务之外使用。您还需要 await Model.create() 的结果.
const transaction = await sequelize.transaction();

const instance1 = await Model1.create({ id: 1, someInfo: "something important" }, {
transaction,
});

const instance2 = await Model2.create({ id: 1 }, {
details: {
instance: instance1,
},
transaction,
});

关于node.js - 如何在 sequelize 中存储模型实例上的其他信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64845898/

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