Normálně se snažím vyhýbat subjektivním odpovědím, ale tohle je opravdu důležitá debata. Nejprve bych doporučil přečíst si Meteor Methods vs Client-Side Operations z blogu Discover Meteor. Všimněte si, že v Edthena používáme výhradně metody z důvodů, které by měly být zřejmé.
Metody
pro
-
Metody mohou správně prosazovat schémata a pravidla ověřování libovolné složitosti bez potřeby externí knihovny. Poznámka – kontrola je vynikající nástroj pro ověřování struktury vašich vstupů.
-
Každá metoda je jediným zdrojem pravdy ve vaší aplikaci. Pokud vytvoříte metodu 'posts.insert', můžete se snadno ujistit, že je to ve vaší aplikaci jediný způsob vkládání příspěvků.
con
- Metody vyžadují imperativní styl a mají tendenci být podrobné ve vztahu k počtu ověření požadovaných pro operaci.
Operace na straně klienta
pro
allow
/deny
má jednoduchý deklarativní styl.
con
-
Ověřování schématu a oprávnění při
update
operace je nekonečně náročná. Pokud potřebujete vynutit schéma, budete muset použít externí knihovnu, jako je collection2. Už jen tento důvod by vám měl dát pauzu. -
Úpravy lze rozšířit po celé vaší aplikaci. Proto může být obtížné identifikovat, proč k určité operaci databáze došlo.
Shrnutí
Podle mého názoru allow
/deny
je esteticky příjemnější, nicméně jeho základní slabinou je vynucování oprávnění (zejména u aktualizací). Operace na straně klienta bych doporučil v případech, kdy:
-
Vaše kódová základna je relativně malá - takže je snadné grep pro všechny případy, kde se vyskytuje konkrétní modifikátor.
-
Nemáte mnoho vývojářů – takže nemusíte všichni souhlasit s tím, že existuje jeden a jediný způsob, jak vložit do X kolekce.
-
Máte jednoduchá pravidla povolení - např. pouze vlastník dokumentu může upravit jakýkoli jeho aspekt.
Podle mého názoru je použití operací na straně klienta rozumnou volbou při vytváření MVP, ale pro všechny ostatní situace bych přešel na metody.
aktualizace 22. 2. 2015
Sashko Stubailo vytvořil návrh na nahrazení povolit/odmítnout metodami vložit/aktualizovat/odebrat.
aktualizace 1. 6. 2016
Meteorický průvodce zaujme pozici, která allow/deny
je třeba se vždy vyhnout.