如何build模一对多关联的续集?
我是新来的Sequelize,我试图弄清楚,我应该如何build模一对多的关系。
我的问题如下:一个学期,很多论文。
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来实现? 我一直在研究文档几个小时,也在网上寻找一些胶水,但没有任何结果。 我发现这样的联系在续集中logging的很差(一对一,多对多更好)。
更新 :
好吧,几个小时后,我研究了它是如何工作的:
Term.hasMany( Paper, { as: 'papers' } ); Paper.hasOne( Term );
现在我们可以做到:
term.addPaper( paper ); term.removePaper( paper ); paper.getTerm() .success( function( term ) { ... }); paper.setTerm( term );
我已经习惯了Django,Sequelize似乎在代码和文档方面都不太成熟。
首先你必须创build关联。 你做得正确:
Term.hasMany( Paper, { as: 'papers' } ); Paper.hasOne( Term );
那么你必须同步这个声明:
sequelize.sync();
现在坚持数据。 您需要先保存对象才能关联它。
term.create()... paper1.create()... paper2.create()... term.setPapers([paper1, paper2]).success(function() { // saved! })
参考: http : //docs.sequelizejs.com/en/1.7.0/docs/associations/#many-to-many-associations
这取决于你如何构build数据库,这会想到..
paper.hasOne(term,{as:"PaperTerm"})