繁体   English   中英

如何在续集中建模一对多关联?

[英]How to model one-to-many association in sequelize?

我是 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如何实现? 我已经研究了几个小时的文档,并且还在网上寻找一些胶水,但没有任何结果。 我发现这种关联在 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 在代码和文档方面都不那么成熟......

首先,您必须创建关联。 你做得正确:

  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

这取决于你如何构建数据库,这会想到..

paper.hasOne(term,{as:"PaperTerm"})

很好,你已经弄清楚它是如何工作的,但如果你使用Paper.belongsTo(Term);正确了。 而不是Paper.hasOne( Term ); 如果您想了解更多信息,这里是参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM