MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Metoda meteorów a reguły odmów/zezwól

Normalnie staram się unikać subiektywnych odpowiedzi, ale to jest naprawdę ważna debata. Najpierw polecam przeczytanie Meteor Methods vs Client-Side Operations z bloga Discover Meteor. Pamiętaj, że w Edthena używamy metod wyłącznie z powodów, które powinny stać się oczywiste.

Metody

pro

  • Metody mogą poprawnie wymusić schemat i reguły walidacji o dowolnej złożoności bez potrzeby korzystania z zewnętrznej biblioteki. Uwaga dodatkowa – check to doskonałe narzędzie do sprawdzania struktury danych wejściowych.

  • Każda metoda jest pojedynczym źródłem prawdy w Twojej aplikacji. Jeśli utworzysz metodę „posts.insert”, możesz łatwo upewnić się, że jest to jedyny sposób wstawiania postów w Twojej aplikacji.

kon

  • Metody wymagają stylu imperatywnego i zwykle są szczegółowe w stosunku do liczby walidacji wymaganych dla operacji.

Operacje po stronie klienta

pro

  • allow /deny ma prosty styl deklaratywny.

kon

  • Sprawdzanie poprawności schematu i uprawnień w update operacja jest nieskończenie trudna. Jeśli potrzebujesz wymusić schemat, będziesz musiał użyć zewnętrznej biblioteki, takiej jak collection2. Już sam ten powód powinien dać ci spokój.

  • Modyfikacje mogą być rozsiane po całej aplikacji. Dlatego może być trudne określenie, dlaczego doszło do określonej operacji na bazie danych.

Podsumowanie

Moim zdaniem allow /deny jest bardziej estetyczny, jednak jego podstawową słabością jest wymuszanie uprawnień (szczególnie w przypadku aktualizacji). Polecam operacje po stronie klienta w przypadkach, gdy:

  • Twoja baza kodu jest stosunkowo niewielka - więc łatwo jest pogrepować we wszystkich przypadkach, w których występuje określony modyfikator.

  • Nie masz wielu programistów, więc nie musisz zgadzać się, że jest jeden i tylko jeden sposób na wstawienie do X kolekcja.

  • Masz proste zasady uprawnień – m.in. tylko właściciel dokumentu może modyfikować dowolny jego aspekt.

Moim zdaniem korzystanie z operacji po stronie klienta jest rozsądnym wyborem podczas budowania MVP, ale przestawiłbym się na metody we wszystkich innych sytuacjach.

aktualizacja 22.02.15

Sashko Stubailo stworzył propozycję zastąpienia zezwól/odmów metodami wstawiania/aktualizowania/usuwania.

aktualizacja 6.01.2016

Przewodnik po meteorach zajmuje pozycję, w której allow/deny należy zawsze unikać.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przywróć bazę danych MongoDB za pomocą mongorestore

  2. Jak zrobić stronicowanie za pomocą zapytań zakresowych w MongoDB?

  3. Próbuję uzyskać listę kolekcji z mangusty

  4. Jak mogę przechowywać porę dnia w MongoDB? Jako ciąg? Podaj dowolny rok/miesiąc/dzień?

  5. Platforma agregacji MongoDB — dynamiczna zmiana nazwy pola