Normaal probeer ik subjectieve antwoorden te vermijden, maar dit is een heel belangrijk debat. Ten eerste raad ik aan Meteor Methods vs Client-Side Operations te lezen van de Discover Meteor-blog. Merk op dat we bij Edthena uitsluitend methoden gebruiken om redenen die duidelijk moeten worden.
Methoden
pro
-
Methoden kunnen schema- en validatieregels van willekeurige complexiteit correct afdwingen zonder dat een externe bibliotheek nodig is. Kanttekening - check is een uitstekend hulpmiddel om de structuur van uw invoer te valideren.
-
Elke methode is een enkele bron van waarheid in uw toepassing. Als je een 'posts.insert'-methode maakt, kun je er gemakkelijk voor zorgen dat dit de enige manier is in je app om berichten in te voegen.
met
- Methoden vereisen een imperatieve stijl, en ze zijn vaak uitgebreid in verhouding tot het aantal validaties dat nodig is voor een bewerking.
Bewerkingen aan de klantzijde
pro
allow
/deny
heeft een eenvoudige declaratieve stijl.
met
-
Schema en machtigingen valideren voor een
update
bediening is oneindig moeilijk. Als u een schema moet afdwingen, moet u een externe bibliotheek gebruiken, zoals collection2. Alleen al deze reden zou je een pauze moeten geven. -
Wijzigingen kunnen over uw hele applicatie worden verspreid. Daarom kan het lastig zijn om vast te stellen waarom een bepaalde databasebewerking heeft plaatsgevonden.
Samenvatting
Naar mijn mening, allow
/deny
is esthetisch aantrekkelijker, maar de fundamentele zwakte is het afdwingen van machtigingen (vooral bij updates). Ik zou operaties aan de clientzijde aanbevelen in gevallen waarin:
-
Je codebase is relatief klein - dus het is gemakkelijk te grep voor alle gevallen waarin een bepaalde modifier voorkomt.
-
Je hebt niet veel ontwikkelaars - dus je hoeft het er niet allemaal mee eens te zijn dat er maar één manier is om in X in te voegen collectie.
-
U heeft eenvoudige toestemmingsregels - b.v. alleen de eigenaar van een document kan elk aspect ervan wijzigen.
Naar mijn mening is het gebruik van client-side operaties een redelijke keuze bij het bouwen van een MVP, maar ik zou overschakelen naar methoden voor alle andere situaties.
update 22-2-15
Sashko Stubailo heeft een voorstel gemaakt om toestaan/weigeren te vervangen door methoden voor invoegen/bijwerken/verwijderen.
update 1/6/16
De meteorengids neemt het standpunt in dat allow/deny
moet altijd worden vermeden.