Normalt prøver jeg at undgå subjektive svar, men det er en rigtig vigtig debat. Først vil jeg anbefale at læse Meteor Methods vs Client-Side Operations fra Discover Meteor-bloggen. Bemærk, at vi hos Edthena udelukkende bruger metoder af årsager, som burde blive indlysende.
Metoder
pro
-
Metoder kan korrekt håndhæve skema- og valideringsregler af vilkårlig kompleksitet uden behov for et eksternt bibliotek. Sidebemærkning - check er et glimrende værktøj til at validere strukturen af dine input.
-
Hver metode er en enkelt kilde til sandhed i din ansøgning. Hvis du opretter en 'posts.insert'-metode, kan du nemt sikre dig, at det er den eneste måde i din app at indsætte indlæg på.
kon
- Metoder kræver en imperativ stil, og de har en tendens til at være verbose i forhold til antallet af valideringer, der kræves for en operation.
Betjening på klientsiden
pro
allow
/deny
har en enkel deklarativ stil.
kon
-
Validerer skema og tilladelser på en
update
operationen er uendelig hård. Hvis du har brug for at håndhæve et skema, skal du bruge et eksternt bibliotek som collection2. Alene denne grund burde give dig pause. -
Ændringer kan spredes over hele din applikation. Derfor kan det være vanskeligt at identificere, hvorfor en bestemt databasehandling skete.
Oversigt
Efter min mening allow
/deny
er mere æstetisk tiltalende, men dens grundlæggende svaghed er at håndhæve tilladelser (især på opdateringer). Jeg vil anbefale operationer på klientsiden i tilfælde, hvor:
-
Din kodebase er relativt lille - så det er nemt at grep i alle tilfælde, hvor en bestemt modifikator forekommer.
-
Du har ikke mange udviklere - så du behøver ikke alle være enige om, at der kun er én måde at indsætte i X samling.
-
Du har simple tilladelsesregler – f.eks. kun ejeren af et dokument kan ændre ethvert aspekt af det.
Efter min mening er det et rimeligt valg at bruge operationer på klientsiden, når man bygger en MVP, men jeg ville skifte til metoder til alle andre situationer.
opdatering 22/2/15
Sashko Stubailo lavede et forslag om at erstatte tillade/afvise med indsæt/opdater/fjern metoder.
opdatering 1/6/16
Meteorguiden indtager den position, der allow/deny
bør altid undgås.