sql >> Database teknologi >  >> NoSQL >> MongoDB

Meteormetode vs. nægte/tillad regler

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.




  1. Hvordan laver man en forespørgselsdato i mongodb ved hjælp af pymongo?

  2. Hvordan opretter man et Mongo Docker-billede med standardsamlinger og data?

  3. Mongoose befolker vs objektnesting

  4. Årsager til og imod at flytte fra SQL-server til MongoDB