sql >> Databáze >  >> NoSQL >> MongoDB

Meteorická metoda vs. pravidla zakázat/povolit

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.




  1. Python &Redis:Osvědčené postupy aplikací pro manažery/pracovníky

  2. Upravte pořadí, ve kterém se vlastnosti zobrazují v MongoDB

  3. MongoDB $cosh

  4. Jarní datové transakce MongoDB