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 umaupdate
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.