我是新來的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