gpt4 book ai didi

javascript - Sequelize (?): Save method stored in variable throws error when called: Unhandled rejection TypeError: Cannot read property 'isNewRecord' of undefined

转载 作者:行者123 更新时间:2023-12-02 22:55:35 25 4
gpt4 key购买 nike

我正在尝试将 Sequelizes instance.save 方法存储在稍后调用的变量中。当我从该变量调用它时,它会抛出错误未处理的拒绝类型错误:无法读取未定义的属性“isNewRecord”。

保存是在通过预加载的数组中的关联对象上执行的。如果我直接调用我要存储的代码,它就会起作用。刚存储时就失败了。

我的代码:

models.Person.hasMany(models.TaskExecutor, { foreignKey: 'personID' });
models.TaskExecutor.belongsTo(models.Person, { foreignKey: 'personID' });

const options = {
include: [
{
model: models.TaskExecutor,
where: { ... }
}
]
};

let handler;

models.Person.findOne(options)
.then(person => {
handler = person.task_executors[0].save;
handler().then(...); // THIS THROWS ERROR

// HOWEVER
person.task_executors[0].save().then(...); // WORKS JUST FINE
})

知道这可能是什么原因吗?

最佳答案

在创建处理程序时,您可能需要绑定(bind) this 关键字变量,因为 save 方法是一个类方法。你可以这样做:

const handler = person.task_executors[0].save.bind(person.task_executors[0]);
handler.then() ....

您可以在此处阅读有关的更多信息https://medium.com/quick-code/understanding-the-this-keyword-in-javascript-cb76d4c7c5e8

关于javascript - Sequelize (?): Save method stored in variable throws error when called: Unhandled rejection TypeError: Cannot read property 'isNewRecord' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57997404/

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