Loading...
Filkolev avatar Filkolev 4482 Точки

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

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

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

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

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

ЛИНК

 

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

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

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

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

Welcome {{fullName}}

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

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

0
Filkolev avatar Filkolev 4482 Точки

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

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

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

0
mihayloff14 avatar mihayloff14 824 Точки

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

0
Filkolev avatar Filkolev 4482 Точки

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

0
AleksandurSeferinkin avatar AleksandurSeferinkin 333 Точки

Зависи... Добра практика е да запазваш в 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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.