po akcji: kiedy na nowo pobierać dane z bazy

0

cześć, od niedawna uczę się frontu i nie wiem jak jest to robione fachowo.

front pobiera dane z API (a te operuje na bazie danych),
załóżmy sytuacje:
mam kategorie i produkty.

użytkownik dodaje nową kategorię (id, nazwa)
po stronie frontu (angular) leci żądanie create do API, ale...

czy powinienem po każdej takiej operacji odpytywać na nowo API o listę kategorii,
czy może robić to tylko po stronie front endu -> akcja dodawania po stronie APIsię powiodła, więc dodaj nową kategorię do listy(która się odświeży) zamiast ciągle na nowo odpytywać API o aktualne dane?

teraz przykładowo chciałbym wykonywać operacje na produktach, a raczej na ich ilości w magazynie (czy gdziekolwiek) - tu dość często zachodzą zmiany, a nie chciałbym też co 10 sekund odświeżać listy i brać counta produktów na nowo (bo produktów może być dużo) - czy tutaj po każdej akcji użytkownika, po stronie front endu po aktualizacji stanu (ilości danego produktu) pobierać dane na nowo z API (bo tak na prawdę 2 userów mogło uzupełniać ten sam produkt)

Od czego zależy decycja - czy głównie od tego ile osób używa aplikacji jednocześnie i jak często są dodawane kategorie i jak często uzupełniane są stany ilościowe?

1

To trochę zależy od tego, w jaki sposób rozwiążesz ewentualne błędy oraz jakiego typu i w jakiej skali modyfikacje dopuszczasz.

To, co napisałeś ma sens - jeśli dałeś zlecenie dodania kategorii i zostało ono "na serwerze" wykonane poprawnie, to możesz uznać, że dana kategoria dodała się OK, w związku z czym dopisujesz ją po stronie frontu do listy. Moim zdaniem w takiej sytuacji nie ma konieczności odświeżania listy i łączenia się z bazą.

Ale są tez sytuacje inne - bo skoro dopuszczasz edycję kategorii, to musisz się liczyć też z możliwością kasowania, przenoszenia, zmieniana nazw itp. W związku z tym właściwie opcje są dwie:

  1. przed każdą operacją odświeżasz listę
  2. musisz podczas operacji dodawania wpisów sprawdzać, czy podana lokalizacja istnieje (oraz oczywiście przemyśleć sposób zachowania się w sytuacji, kiedy wyskoczy błąd).

Moim zdaniem odświeżanie cały czas listy jest gorszym rozwiązaniem i to przynajmniej z dwóch powodów:

  1. ktoś odejdzie od kompa podczas pracy, a skrypt będzie co kilka sekund odświeżał kategorie. Przy kilku użytkownikach nie spowoduje to odczuwalnego obciążenia, ale jeśli projekt ma być na większa skalę (nie napisałeś, ilu użytkowników planujesz obsługiwać) może to niepotrzebnie zamulać serwer
  2. i tak jest ryzyko, że pół sekundy przed wciśnięciem "wyślij" ktoś coś zmieni. W tym momencie - zakładając, że nie wykonujesz sprawdzenia poprawności podczas zapisu - jest ryzyko, że wpis się nie doda, albo trafi w jakieś przypadkowe miejsce.

Dlatego moim zdaniem - lepszą opcją jest sprawdzanie po całym wywołaniu, czy wszystko poszło OK, a jeśli był problem - odpowiednie jego obsłużenie.

1

Jeśli aktualność UI jest kluczowe, to możesz rozważyć użycie Web Socketów - nie obciążasz wtedy serwera zbędnymi rządaniami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1