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

Metodo Meteor vs. regole nega/consenti

Normalmente cerco di evitare risposte soggettive, ma questo è un dibattito davvero importante. Per prima cosa consiglierei di leggere Metodi Meteor vs Operazioni lato client dal blog Discover Meteor. Nota che in Edthena utilizziamo esclusivamente metodi per ragioni che dovrebbero diventare evidenti.

Metodi

professionista

  • I metodi possono applicare correttamente schemi e regole di convalida di complessità arbitraria senza la necessità di una libreria esterna. Nota a margine:il controllo è uno strumento eccellente per convalidare la struttura dei tuoi input.

  • Ogni metodo è una singola fonte di verità nella tua applicazione. Se crei un metodo "posts.insert", puoi facilmente assicurarti che sia l'unico modo nella tua app per inserire post.

con

  • I metodi richiedono uno stile imperativo e tendono ad essere dettagliati in relazione al numero di convalide richieste per un'operazione.

Operazioni lato client

professionista

  • allow /deny ha uno stile dichiarativo semplice.

con

  • Convalida dello schema e delle autorizzazioni su un update l'operazione è infinitamente difficile. Se devi applicare uno schema, dovrai utilizzare una libreria esterna come collection2. Questo solo motivo dovrebbe farti riflettere.

  • Le modifiche possono essere diffuse in tutta l'applicazione. Pertanto, potrebbe essere difficile identificare il motivo per cui si è verificata una particolare operazione sul database.

Riepilogo

Secondo me, allow /deny è esteticamente più gradevole, tuttavia la sua fondamentale debolezza sta nell'imporre i permessi (in particolare sugli aggiornamenti). Consiglierei operazioni lato client nei casi in cui:

  • La tua base di codice è relativamente piccola, quindi è facile grep per tutte le istanze in cui si verifica un particolare modificatore.

  • Non hai molti sviluppatori, quindi non è necessario che tutti siano d'accordo sul fatto che esiste un solo modo per inserire in X raccolta.

  • Hai semplici regole di autorizzazione, ad es. solo il proprietario di un documento può modificarne qualsiasi aspetto.

A mio avviso, l'utilizzo di operazioni lato client è una scelta ragionevole durante la creazione di un MVP, ma passerei ai metodi per tutte le altre situazioni.

aggiornamento 22/2/15

Sashko Stubailo ha creato una proposta per sostituire i metodi di autorizzazione/negazione con i metodi di inserimento/aggiornamento/rimozione.

aggiornamento 01/06/16

La guida meteorica assume la posizione che allow/deny dovrebbe essere sempre evitato.