sql >> Base de Datos >  >> NoSQL >> MongoDB

Método Meteor frente a reglas de denegación/permisión

Normalmente trato de evitar respuestas subjetivas, pero este es un debate realmente importante. Primero recomendaría leer Meteor Methods vs Client-Side Operations del blog Discover Meteor. Tenga en cuenta que en Edthena utilizamos métodos exclusivamente por razones que deberían ser evidentes.

Métodos

profesional

  • Los métodos pueden hacer cumplir correctamente el esquema y las reglas de validación de complejidad arbitraria sin necesidad de una biblioteca externa. Nota al margen:la verificación es una excelente herramienta para validar la estructura de sus entradas.

  • Cada método es una única fuente de verdad en su aplicación. Si crea un método 'posts.insert', puede asegurarse fácilmente de que es la única forma de insertar publicaciones en su aplicación.

contra

  • Los métodos requieren un estilo imperativo y tienden a ser detallados en relación con el número de validaciones requeridas para una operación.

Operaciones del lado del cliente

profesional

  • allow /deny tiene un estilo declarativo simple.

contra

  • Validación de esquema y permisos en una update la operación es infinitamente difícil. Si necesita hacer cumplir un esquema, deberá usar una biblioteca externa como collection2. Esta sola razón debería darle una pausa.

  • Las modificaciones se pueden distribuir por toda la aplicación. Por lo tanto, puede ser complicado identificar por qué ocurrió una operación de base de datos en particular.

Resumen

En mi opinión, allow /deny es más agradable estéticamente, sin embargo, su debilidad fundamental está en hacer cumplir los permisos (particularmente en las actualizaciones). Recomendaría operaciones del lado del cliente en casos donde:

  • Su base de código es relativamente pequeña, por lo que es fácil buscar todas las instancias en las que se produce un modificador en particular.

  • No tiene muchos desarrolladores, por lo que no es necesario que todos estén de acuerdo en que hay una y solo una forma de insertar en X colección.

  • Tiene reglas de permiso simples, p. solo el propietario de un documento puede modificar cualquier aspecto del mismo.

En mi opinión, usar operaciones del lado del cliente es una opción razonable al crear un MVP, pero cambiaría a métodos para todas las demás situaciones.

actualización 22/02/15

Sashko Stubailo creó una propuesta para reemplazar permitir/denegar con métodos insertar/actualizar/eliminar.

actualización 01/06/16

La guía de meteoros toma la posición que allow/deny siempre debe evitarse.