Софтуерно Инженерство
Loading...
Filkolev avatar Filkolev 4501 Точки

[JavaScript Applications] Как да предпазим базата от невалидни данни?

Днес решавах изпита Products от предното ниво. В процеса на тестване установих, че нищо не пречи да пратя заявка, в която подавам невалидни данни - например празно име, или NaN вместо цена.

Заобиколих проблема с проверки в кода, при това ако не се лъжа във вюто, където подозирам, че не им е мястото. Например, ако паролата и повторената парола не съвпадат просто показвам нотификация и не викам контролера. Обаче с една проста заявка през пощальона и проверките увисват.

Направих тая глупост колкото да тръгне що-годе коректно (бих постъпил така и на изпита). Все пак бих искал да знам как е правилно да се подходи в случая. Проверките в кода къде би трябвало да се случват? Как да направя проверки и на бекенда? Може би с някакъв cloud code?

Ето и самия код ако на някого му е интересно. Следвах схемата, която Богомил показа на подготовката.

ЛИНК

 

Едит: И бонус въпрос. Има условие, в което се иска да се филтрират продуктите. Направих всичко посредством заявките, освен търсенето по ключова дума. Не можах да намеря как да го направя в документацията, затова просто филтрирах резултатите преди да ги визуализирам. Предполагам има начин да кажа какво точно искам да изтегля от базата. Някой ако го знае ще съм благодарен ако го сподели :)

5
JavaScript Applications 01/05/2015 20:13:52
mihayloff14 avatar mihayloff14 825 Точки

Аз също имам въпрос със свързания материал.

При решаването на последните изпити започвам да изграждам практиката да пълня localStorage с всякакви данни като например username, fullName, gender и т.н. защото ми трябват за да мога например да изпиша на home screen-а

Welcome {{fullName}}

Предполагам, че е по-добра практика да се запазва в localStorage само sessionToken, а когато ни трябват други данни да се прави get заявка към сървъра с текущия sessionToken за да получим данни за user-а, но това за сметка на това отнема повече време.

Та, какво е по-добре да се използва като практика и дали това въобще ще влиза като критерий за оценката в предстоящия изпит?

0
Filkolev avatar Filkolev 4501 Точки

Аз лично ползвам по-често sessionStorage. След като така ни е показвано до момента не би следвало да ни санкционират ако го правим по този начин.

Не смятам, че името и айдито са толкова чувствителна информация, че да не може да се запазват в сториджа. 

Кукитата са алтернатива, ама хич не съм се занимавал да ги разучавам. Да правиш всеки път заявка ми се струва по-кофти идея.

0
mihayloff14 avatar mihayloff14 825 Точки

Когато записваме данни в sessionStorage, те изчезват след затваряне на tab-а. След това като влезем, ние все едно не сме login-нати, но в базата си остава предишния sessionToken с който сме влязали и това мисля че прави проблем. Как точно разрешаваш това?

0
Filkolev avatar Filkolev 4501 Точки

Не ме е интересувал достатъчно тоя проблем, че да го решавам. Просто не искам да си пълня с боклуци браузъра :)

0
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

Зависи... Добра практика е да запазваш в localStorage това, което не търпи външни промени. Искам да кажа, че ще е грубо да запишеш нещо в localStorage, някой администратор/модератор/потребител да направи промяна, която ще се отрази в сървъра, но клиента ще взема информацията от локалното хранилище и тя няма да е up-to-date.

В твоя случай не е проблем да запазиш всичката информация за потребителя в localStorage... Няма смисъл да дърпаш данни от сървъра, които знаеш, че няма да бъдат променени от друго място. А и щом си събрал смелост да записваш там най-важното ( session token ), защо да не запишеш и нещо по-маловажно?

Наистина ако "загубиш" токена, ти трябва да се логнеш отново. В сайта на parse.com пише следното: 

"There is one distinct Session object for each user-installation pair; if a user issues a login request from a device they're already logged into, that user's previous Session object for that Installation is automatically deleted."

Аз разбирам, че можеш да се логваш колкото пъти си искаш и ще ти се дава нов sessionToken, а старите ще се изтриват. Пробвах го, едното е вярно - другото не е... Направих един спам от 10 логина през postman и всеки път получавах нов sessionToken, но старите си остават в базата данни и сега имам общо 10 Session обекта.

Аз изобщо не бих мислил за това нещо, защото се съмнявам да ми вземат точки, защото старите токени си стоят - те са скрити в базата и не правят нищо друго, освен да заемат място. Също така знам, че не бих ползвал parse.com освен ако не ме задължат да го правя.

0
02/05/2015 23:02:24