我是新来的Sequelize,我试图弄清楚,我应该如何模拟一对多的关系。如何在续集中模拟一对多关联?
我的问题如下:一个学期,很多论文。
var Term = sequelize.define('Term', ...);
var Paper = sequelize.define('Paper', ...);
让我们假设我有一个术语。每学期可以有很多论文,我想为我的任期添加/删除论文。我还想获得所有期限的论文。
var term;
...
term.getPapers(...);
term.setPapers(...);
term.addPaper(paper);
term.removePaper(paper);
现在,让我们假设我有一篇论文。我想为我的论文设定/设定期限。
var paper;
...
paper.getTerm();
paper.setTerm();
如何使用sequelize实现?我一直在研究文档数小时,并在网上寻找一些胶水,但没有任何结果。我发现这种类型的关联在续集中记录得很差(一对一,多对多更好)。
更新:
好,几个小时后,我摸索出它是如何工作:
Term.hasMany(Paper, { as: 'papers' });
Paper.hasOne(Term);
现在我们可以这样做:
term.addPaper(paper);
term.removePaper(paper);
paper.getTerm()
.success(function(term)
{
...
});
paper.setTerm(term);
我已经习惯了Django,看起来Sequelize在代码和文档方面都不太成熟......
我同意,Sequelize协会是非常反直觉我和文档是没有帮助。感谢您发布此信息。 –
在这种情况下,你确定'Paper.hasOne()'是否是正确的关联类型?你不应该使用'Paper.belongsTo()'?根据文档,这更有意义。 –
我不同意,因为我不认为一对一和多对多更好。文档太奇怪了。它甚至没有解释由关联创建的方法的参数和返回值。感谢您发布此信息。 :D(经过一番阅读,现在我认为@SlavaFominII可能是对的) – SCLeo