Node.js Sequelize的动态集合/获取关联方法

Node.js Sequelize的动态集合/获取关联方法,node.js,sequelize.js,Node.js,Sequelize.js,在Sequelize的文档中,我能找到的关于这一点的唯一参考是 显然,如果你有以下情况: Person.hasOne(Person, {as: 'Father', foreignKey: 'DadId'}) Person.setFather(); Person.getFather(); 然后,您可以执行以下操作: Person.hasOne(Person, {as: 'Father', foreignKey: 'DadId'}) Person.setFather(); Person.get

在Sequelize的文档中,我能找到的关于这一点的唯一参考是

显然,如果你有以下情况:

Person.hasOne(Person, {as: 'Father', foreignKey: 'DadId'})
Person.setFather();
Person.getFather();
然后,您可以执行以下操作:

Person.hasOne(Person, {as: 'Father', foreignKey: 'DadId'})
Person.setFather();
Person.getFather();
据我所知,这些set和get方法是为关联动态创建的

但是,我尝试过类似的方法,但不起作用:

Person.hasOne(Father, { foreignKey: 'father_id' });

var aPerson = Person.build({
    name: 'Mike'
});

aPerson.setFather({ id: 1 });
我意识到{id:1}位可能不正确,但问题是我收到一条消息说setFather函数未定义


基本上,我的问题是:如何将关联附加到Sequelize中已创建的某个模型实例上?

您有针对父亲的特定模型吗?关联使用模型名称,这意味着仅将用户模型导入为父模型是行不通的:

var Person = sequelize.define('person')

var Father = person;

Person.hasOne(Father) // adds setPerson
Person.hasOne(Person, { as: 'father'  }) // adds setFather

我最近更新了关联的API文档-希望它能更清楚地显示添加了哪些函数以及它们采用了哪些参数

我有一个父模型,只是忘记了复制/粘贴它。显然,这只是一个例子,我真正的代码是不同的,也更复杂。然而,这可能会激励我。如果我还是不明白的话,我会尝试一下并在这里发表评论。谢谢此外,您不能将普通JS对象传递给set函数,或者传递sequelize实例father.build/find,或者直接传递主键setFather1Yeah,这就是我说的aPerson.setFather{id:1};可能不正确。提及setFather1非常有用,谢谢!我发现Sequelize文档在某些方面有点欠缺,所以不看代码就很难判断应该发生什么。目前无法检查主要问题,请稍后检查。再次感谢你!我查看了Sequelize的代码,似乎它确实正确地创建了getter和setter,但我仍然无法访问它们,这让我相信我做得不对。我有一些类似于var instance=Person.build{..}的东西,然后我尝试instance.setFather。这样做是不对的吗?我看是对的。尝试记录Person.Instance.prototype-在那里您可以看到Person实例上有哪些方法