簡體   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