MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Метод Meteor срещу правила за отказ/разрешаване

Обикновено се опитвам да избягвам субективните отговори, но това е наистина важен дебат. Първо бих препоръчал да прочетете Meteor Methods vs Client Side Operations от блога Discover Meteor. Имайте предвид, че в Edthena ние използваме методи изключително по причини, които трябва да станат очевидни.

Методи

професионален

  • Методите могат правилно да налагат схема и правила за валидиране с произволна сложност без нужда от външна библиотека. Странична бележка - проверката е отличен инструмент за валидиране на структурата на вашите входове.

  • Всеки метод е един единствен източник на истина във вашето приложение. Ако създадете метод „posts.insert“, можете лесно да се уверите, че това е единственият начин в приложението ви за вмъкване на публикации.

con

  • Методите изискват императивен стил и са склонни да бъдат многословни по отношение на броя на валидациите, необходими за операция.

Операции от страна на клиента

професионален

  • allow /deny има прост декларативен стил.

con

  • Проверка на схемата и разрешенията за update операцията е безкрайно трудна. Ако трябва да приложите схема, ще трябва да използвате външна библиотека като collection2. Само тази причина трябва да ви накара да спрете.

  • Модификациите могат да бъдат разпределени във вашето приложение. Следователно може да е трудно да се идентифицира защо се е случила конкретна операция с база данни.

Резюме

Според мен allow /deny е по-естетически приятен, но основната му слабост е в налагането на разрешения (особено при актуализации). Бих препоръчал операции от страна на клиента в случаите, когато:

  • Вашата кодова база е сравнително малка - така че е лесно да се грепвате за всички случаи, в които се появява конкретен модификатор.

  • Нямате много разработчици - така че не е нужно всички да сте съгласни, че има един и единствен начин за вмъкване в X колекция.

  • Имате прости правила за разрешение - напр. само собственикът на документ може да променя който и да е аспект от него.

Според мен използването на операции от страна на клиента е разумен избор при изграждането на MVP, но бих преминал към методи за всички други ситуации.

актуализация на 22.02.15

Сашко Стубайло създаде предложение за замяна на разрешаване/отказване с методи за вмъкване/актуализиране/премахване.

актуализация 6/1/16

Метеорният водач заема позиция, която allow/deny винаги трябва да се избягва.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $dayOfYear

  2. MongoDB:Какво е обединяване на връзки и изчакване?

  3. Как се инсталира MongoDb от Meteor?

  4. MongoDB 2.4.1 вече е наличен в ScaleGrid

  5. $filter в $project MongoDB с помощта на Spring Data