Javascript Sequelize(?):存储在变量中的Save方法在调用时抛出错误:未处理的拒绝类型错误:无法读取属性';isNewRecord';未定义的

Javascript Sequelize(?):存储在变量中的Save方法在调用时抛出错误:未处理的拒绝类型错误:无法读取属性';isNewRecord';未定义的,javascript,sequelize.js,Javascript,Sequelize.js,我正在尝试将Sequelizes实例存储在变量中,以便稍后调用。当我从该变量调用它时,它抛出错误Unhandled rejection TypeError:无法读取未定义的属性“isNewRecord” 保存是在数组中的关联对象上执行的。如果我直接调用我试图存储的代码,它就会工作。它在存储时失败 我的代码: models.Person.hasMany(models.TaskExecutor, { foreignKey: 'personID' }); models.TaskExecutor.bel

我正在尝试将Sequelizes
实例存储在变量中,以便稍后调用。当我从该变量调用它时,它抛出错误Unhandled rejection TypeError:无法读取未定义的属性“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
    })

知道原因是什么吗?

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

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

你可以在这里阅读更多关于
这个
的内容

是的,你是对的。谢谢你让我检查这个。出于某种原因,我认为不是这个原因。我还不习惯“这个”约束问题。