MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Método Meteor vs. regras de negação/permissão


Normalmente tento evitar respostas subjetivas, mas esse é um debate muito importante. Primeiro eu recomendo a leitura de Meteor Methods vs Client-Side Operations do blog Discover Meteor. Note-se que na Edthena utilizamos exclusivamente métodos por razões que devem ficar evidentes.

Métodos

pro


  • Os métodos podem aplicar corretamente as regras de esquema e validação de complexidade arbitrária sem a necessidade de uma biblioteca externa. Nota lateral - check é uma excelente ferramenta para validar a estrutura de suas entradas.

  • Cada método é uma única fonte de verdade em seu aplicativo. Se você criar um método 'posts.insert', poderá garantir facilmente que é a única maneira em seu aplicativo de inserir postagens.

contra

  • Os métodos exigem um estilo imperativo e tendem a ser detalhados em relação ao número de validações necessárias para uma operação.

Operações do lado do cliente

pro

  • allow /deny tem um estilo declarativo simples.

contra


  • Validando esquema e permissões em uma update operação é infinitamente difícil. Se você precisar impor um esquema, precisará usar uma biblioteca externa como collection2. Esta razão por si só deve dar-lhe uma pausa.

  • As modificações podem ser espalhadas por todo o seu aplicativo. Portanto, pode ser complicado identificar por que uma operação de banco de dados específica aconteceu.

Resumo


Na minha opinião, allow /deny é esteticamente mais agradável, porém sua fraqueza fundamental está na imposição de permissões (particularmente em atualizações). Eu recomendaria operações do lado do cliente nos casos em que:

  • Sua base de código é relativamente pequena - portanto, é fácil grep para todas as instâncias em que ocorre um modificador específico.

  • Você não tem muitos desenvolvedores - portanto, não é necessário que todos concordem que existe uma e apenas uma maneira de inserir em X coleção.

  • Você tem regras de permissão simples - por exemplo, somente o proprietário de um documento pode modificar qualquer aspecto dele.

Na minha opinião, usar operações do lado do cliente é uma escolha razoável ao construir um MVP, mas eu mudaria para métodos para todas as outras situações.

atualização em 22/02/15

Sashko Stubailo criou uma proposta para substituir permitir/negar pelos métodos inserir/atualizar/remover.

atualização em 01/06/16

O guia de meteoros assume a posição de allow/deny deve ser sempre evitado.