Jestem nowy w Sequelize, i próbuję wymyślić, jak mam modelować relację jeden-do-wielu.Jak modelować relację jeden-do-wielu w sequelu?
Mój problem jest następujący: jeden termin, wiele artykułów.
var Term = sequelize.define('Term', ...);
var Paper = sequelize.define('Paper', ...);
Załóżmy, że mam termin. Każdy termin może mieć wiele artykułów, a ja chciałbym dodać/usunąć dokumenty na mój semestr. Chciałbym również uzyskać wszystkie dokumenty na ten termin.
var term;
...
term.getPapers(...);
term.setPapers(...);
term.addPaper(paper);
term.removePaper(paper);
Teraz załóżmy, że mam referat. Chciałbym/ustawić termin dla mojego papieru.
var paper;
...
paper.getTerm();
paper.setTerm();
Jak można to osiągnąć przy użyciu sequelu? Przez wiele godzin studiowałem docs, a także szukałem trochę kleju w sieci, ale bez żadnych rezultatów. Uważam, że ten rodzaj powiązania jest bardzo słabo udokumentowany w sequelu (jeden do jednego i wiele do wielu jest znacznie lepszy).
Aktualizacja:
porządku, kilka godzin później pracowałem się, jak to działa:
Term.hasMany(Paper, { as: 'papers' });
Paper.hasOne(Term);
Teraz możemy zrobić:
term.addPaper(paper);
term.removePaper(paper);
paper.getTerm()
.success(function(term)
{
...
});
paper.setTerm(term);
ja przyzwyczaiłem się do Django, i wydaje się, że Sequelize jest FAR mniej dojrzałe, zarówno pod względem kodu jak i dokumentacji ...
zgadzam, stowarzyszenia Sequelize są niezwykle intuicyjne do mnie i dokumentacja nie pomaga. Dziękujemy za opublikowanie tego. –
Czy jesteś pewien, że 'Paper.hasOne()' jest w tym przypadku prawidłowym typem powiązania? Nie powinieneś używać 'Paper.belongsTo()'? To ma więcej sensu, zgodnie z dokumentami. –
Nie zgadzam się, ponieważ nie uważam, że jeden do jednego i wiele do wielu jest lepszych. Dokumentacja jest tak dziwna. Nie wyjaśnia nawet parametrów i wartości zwracanych metod tworzonych przez asocjacje. Dziękujemy za opublikowanie tego. : D (Po pewnym czytaniu, teraz myślę, że @SlavaFominII ma prawdopodobnie rację) – SCLeo