Jenze. Opravte me jestli se mylim, ale ja budu muset zvalidovat pritomnost a delku kazdeho jednoho fieldu tak, jako by to pro me udelalo napr. preddefinovane DTO v Jave a preddefinovana tabulka v Relacni databazi. Protoze jinak by mohl nejaky hacker do endpointu order poslat 100gb nesmyslu a zahltit mi databazi.
Takze kdyz jsem si chtel na zacatku ulehcit praci a pouzit dynamicky typovany jazyk a MongoDB, tak nakonec budu muset stejne delat to, co by pro me delal staticky typovany jazyk a Relacni databaze k tomu.
Nebo mi neco nedochazi?
Je to otázka rétoriky.
Čistě fakticky: chceš validovat? (blbá otázka) Takže budeš muset validovat. Je vcelku buřt jakým způsobem.
Když si pozorně přečteš, co jsi napsal, tak tam nikde nenajdeš, že by ti staticky typovaný jazyk nějak zázračně všechno automaticky validoval. Databáze detto. Ty tam píšeš, že ti to bude dělat staticky typovaný jazyk, protože v něm to musíš nadefinovat, jazyk ti to nutí (tiše předpokládám, že tam navíc máš nějakou reflexi nebo podobnou chytristiku, aby si nemusel psát tu samou validaci jen kvůli tomu, aby ti to sedlo na typy). A stejně si to musíš nadefinovat v tom javascriptu. Není v tom žádný zvláštní rozdíl.
Vypíchl bych tři detaily:
1/ Používáš-li relační databázi, nebo staticky typovaný jazyk, tak máš jakési povědomí o validaci, o tom, že do varcharů se čísla neukládají (zdravím MySQL), etc. Takže tě to napadne, že tam tu validaci budeš potřebovat, že by tam asi měla být.
2/ Statické jazyky, zvláště takové debilní jako je Java nebo C# v praxi dopadají často tak, že tam tu validaci máš dvakrát třikrát, protože jednou na vstupu, podruhé při mapování na DTO, třetí ve formulářích, čtvrté při mapováná do Hibernate, páté ve vlastní databázi...
V dynamickém jazyce jako je Javascript obvykle validaci nemáš vůbec. Protože bod 1. Ale když už to dělá nějaký senior, tak to udělá chytře, definuje si pravidla jednou, a pak je posílá všude kam potřebuje.
3/ Staticky typované jazyky mají úplně jinou motivaci než validaci dat, i když i na to se samozřejmě dají použít (nebo tam překáží).
Disclaimer: Jsem fanatický příznivce a zastánce staticky typovaných jazyků a nenávidím dynamicky typované. To mi však nebrání vidět jasně.