sql >> Databasteknik >  >> NoSQL >> MongoDB

Meteormetod kontra neka/tillåt regler

Normalt försöker jag undvika subjektiva svar, men det här är en riktigt viktig debatt. Först skulle jag rekommendera att läsa Meteor Methods vs Client-Side Operations från Discover Meteor-bloggen. Observera att vi på Edthena uteslutande använder metoder av skäl som borde bli uppenbara.

Metoder

pro

  • Metoder kan på ett korrekt sätt genomdriva schema- och valideringsregler av godtycklig komplexitet utan behov av ett externt bibliotek. Sidanteckning - check är ett utmärkt verktyg för att validera strukturen för dina inmatningar.

  • Varje metod är en enda källa till sanning i din ansökan. Om du skapar en 'posts.insert'-metod kan du enkelt se till att det är det enda sättet i din app att infoga inlägg.

kon

  • Metoder kräver en imperativ stil, och de tenderar att vara utförliga i förhållande till antalet valideringar som krävs för en operation.

Operation på klientsidan

pro

  • allow /deny har en enkel deklarativ stil.

kon

  • Validerar schema och behörigheter för en update operationen är oändligt svår. Om du behöver genomdriva ett schema måste du använda ett externt bibliotek som collection2. Bara detta skäl borde ge dig paus.

  • Ändringar kan spridas över hela din applikation. Därför kan det vara svårt att identifiera varför en viss databasoperation hände.

Sammanfattning

Enligt min åsikt allow /deny är mer estetiskt tilltalande, men dess grundläggande svaghet är att upprätthålla behörigheter (särskilt för uppdateringar). Jag skulle rekommendera operationer på klientsidan i fall där:

  • Din kodbas är relativt liten - så det är lätt att grep för alla fall där en viss modifierare förekommer.

  • Du har inte många utvecklare - så du behöver inte alla vara överens om att det finns ett och bara ett sätt att infoga i X samling.

  • Du har enkla tillståndsregler – t.ex. endast ägaren av ett dokument kan ändra någon aspekt av det.

Enligt min åsikt är det rimligt att använda operationer på klientsidan när man bygger en MVP, men jag skulle byta till metoder för alla andra situationer.

uppdatering 22/2/15

Sashko Stubailo skapade ett förslag för att ersätta tillåt/neka med metoder för att infoga/uppdatera/ta bort.

uppdatering 1/6/16

Meteorguiden tar positionen som allow/deny bör alltid undvikas.




  1. Hur man får alla nycklar i Redis

  2. Hur säkert är det att lagra sessioner med Redis?

  3. Hur kan jag bygga ett program med c++ drivrutinen för mongodb?

  4. MongoDB kapslad ELLER/OCH var?