Normalerweise versuche ich, subjektive Antworten zu vermeiden, aber dies ist eine wirklich wichtige Debatte. Zuerst würde ich empfehlen, Meteor Methods vs. Client-Side Operations aus dem Discover Meteor Blog zu lesen. Beachten Sie, dass wir bei Edthena Methoden ausschließlich aus Gründen verwenden, die offensichtlich sein sollten.
Methoden
pro
-
Methoden können Schema- und Validierungsregeln beliebiger Komplexität korrekt durchsetzen, ohne dass eine externe Bibliothek erforderlich ist. Nebenbemerkung - Check ist ein ausgezeichnetes Werkzeug, um die Struktur Ihrer Eingaben zu validieren.
-
Jede Methode ist eine Single Source of Truth in Ihrer Anwendung. Wenn Sie eine 'posts.insert'-Methode erstellen, können Sie einfach sicherstellen, dass dies die einzige Möglichkeit in Ihrer App ist, Beiträge einzufügen.
con
- Methoden erfordern einen imperativen Stil und neigen dazu, in Bezug auf die Anzahl der für eine Operation erforderlichen Validierungen ausführlich zu sein.
Clientseitige Operationen
pro
allow
/deny
hat einen einfachen deklarativen Stil.
con
-
Validierung von Schema und Berechtigungen bei einem
update
Die Bedienung ist unendlich schwer. Wenn Sie ein Schema erzwingen müssen, müssen Sie eine externe Bibliothek wie collection2 verwenden. Allein dieser Grund sollte Ihnen zu denken geben. -
Änderungen können über Ihre gesamte Anwendung verteilt werden. Daher kann es schwierig sein, herauszufinden, warum eine bestimmte Datenbankoperation stattgefunden hat.
Zusammenfassung
Meiner Meinung nach allow
/deny
ist ästhetisch ansprechender, seine grundlegende Schwäche liegt jedoch in der Durchsetzung von Berechtigungen (insbesondere bei Updates). Ich würde clientseitige Operationen in Fällen empfehlen, in denen:
-
Ihre Codebasis ist relativ klein - daher ist es einfach, nach allen Instanzen zu suchen, in denen ein bestimmter Modifikator vorkommt.
-
Sie haben nicht viele Entwickler - also müssen Sie sich nicht alle einig sein, dass es nur einen einzigen Weg gibt, in X einzufügen Sammlung.
-
Sie haben einfache Berechtigungsregeln - z.B. Nur der Besitzer eines Dokuments kann jeden Aspekt davon ändern.
Meiner Meinung nach ist die Verwendung von clientseitigen Operationen eine vernünftige Wahl beim Erstellen eines MVP, aber ich würde in allen anderen Situationen auf Methoden umsteigen.
Aktualisierung 22.02.15
Sashko Stubailo hat einen Vorschlag erstellt, um Allow/Deny durch Insert/Update/Remove-Methoden zu ersetzen.
Aktualisierung 01.06.16
Der Meteorführer vertritt die Position, dass allow/deny
sollte immer vermieden werden.