sql >> Database >  >> NoSQL >> MongoDB

Meteormethode versus regels voor weigeren/toestaan

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.




  1. Controleer of elk element in de array overeenkomt met de voorwaarde

  2. Verwijder alle velden die null zijn

  3. Bulksleutels maken in Redis - ServiceStack C#

  4. MongoDB en C#:hoofdletterongevoelig zoeken