Jaki jest najlepszy sposób na dołączenie zachowania do kolekcji Meteor?
W Meteor po pobraniu rekordu z bazy danych jest to tylko rekord. Więc jeśli mam kolekcję o nazwieDogs
, adog
może miećfur: 'brown'
lubbreath: 'stinky'
, ale nie mabark()
metoda.
Oczywiście mogłem stworzyć pewne funkcje, które oczekujądog
jako argument, a następnie wykonaj na nim operacjedog
. Mógłbym nawet zamknąć wszystkie te funkcje w jednym konstruktorze. Nie szaleję za tym podejściem, ale jeśli ktoś ma czysty i rozsądny sposób, by to zrobić, to wszyscy mam uszy.
Inną myślą, którą miałem, było owinięciedog
wBackbone.Model
. To może być interesujące, jakfetch
isave
można na nowo zdefiniowaćfind
iinsert
lubupdate
i możesz tam zdefiniować wszystkie swoje zachowania, ale przeczytałem, że tego typu rzeczy są na ogół odradzane.
Czy jest odpowiedni sposób, aby to zrobić? Czy jestMeteor.Model
oficjalnie w pracach? Jak inni rozwiązują ten problem?
Edytować
Dla osób przychodzących na to pytanie ponad rok po przyjęciu odpowiedzi: w czasie tej edycji używamPakiet minimongoid mrt Exygy, który ma pewne ulepszeniawersja haihappen jest to wspomniane w blogu powiązanym z zaakceptowaną odpowiedzią.
Obecnie uczestniczę w repozytorium, aby wynik był bardziej podobny do relacji. Mam nadzieję, że inni skorzystają z tego i będą skłonni wnieść użyteczną funkcjonalność.
Edytować
Kolejna odpowiedź sugerowała użycietransform
właściwość podczas tworzenia kolekcji. Chociaż zdecydowanie wolę coś, czego sam nie potrzebuję, ta funkcja dodaje wiele możliwości i mam nadzieję, że wszystkie zespoły, które pracują nad ORM dla Meteor, skorzystają z tego w rdzeniu .
Oto post na blogu wyjaśniając, jak korzystać ztransform
własność.
Również,minimongoid jest teraz dostępny jako pakiet Meteori nadal go używam. Posiada wsparcie dla walidacji i deklarowania relacji. Dodałem także pewną funkcjonalność do tego pakietu, więc jeśli płyta ma wiele elementów,board.pieces().create(attributes)
utrzyma nowepiece
nagrać z podanymattributes
i automatycznie skojarzy się zboard
. Spośród różnych rozwiązań, które widziałem, wydaje się to być najbardziej wszechstronne.