2013-01-24 6 views
9

Jestem tradycyjnym programistą C#, a w przeszłości używałem MVC z warstwowymi architekturami. Teraz napisałem aplikację z NodeJs/Mongoose i jestem nieco zdziwiony tym, jak działa Mongoose.Czy metody powinny być zdefiniowane na Modelach w Mongoose lub w osobnej warstwie?

W przeszłości chciałbym zdefiniować moje modele jako proste POCO, przekazać je przez warstwy i moje repozytorium zrobiłoby cały mój dostęp do danych.

Z Mongoose, że dostęp do danych dzieje się na samym modelu. Możesz wywołać funkcję .save(), zadeklarować metody statyczne i instancję, np. myModel.findAllByX(), itp. Chociaż jest to dla mnie odejście, mogę zobaczyć pro i con's do tego.

Czy tu czegoś brakuje? Czy są jakieś wskazówki dotyczące dobrych praktyk, czy też powinienem zachować prostotę i zadeklarować wszystko na moim modelu Mongoose, a nie przekazać go innej warstwie?

Odpowiedz

9

Ponieważ mangusta jest już abstrakcją na warstwie bazy danych, powinieneś zrobić dokładnie to, co podejrzewasz i zbudować abstrakcje modelu bezpośrednio w mangusty.

Takim właśnie jest system static i method w modelach Mongoose - do tego służy również system przechwytujący (pre-init, save, itp.).

W dużych aplikacjach zazwyczaj uzyskujemy dostęp do naszych modeli mangowych wyłącznie poprzez niestandardową statykę i metody ... w tym sensie można argumentować, że te statyki i metody faktycznie tworzą "oddzielną warstwę", o której mówisz o od MVC.

Powiązane problemy