• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Node.js , walidacja, przeslanie bledow

Object Storage Arubacloud
0 głosów
402 wizyt
pytanie zadane 18 czerwca 2017 w Inne języki przez Bartlomiej Bywalec (2,480 p.)
Siema mam pytanie, zacząłem się dziś zagłębiać w tajniki node, przerobiłem tego trochę ale wciąż nie wiem jakby to miało wyglądać w kwestii przesłanie błędów od strony backendu w kwestii walidacji dzięki node.js.

Mam stworzony farmularz(angularjs 1) prosty, imie i email, oraz strone backendowa walidacje imiona ze np zbyt długie imie, i czy email jest nim.

I teraz nie wiem kompletnie jak bym miał się zabrać za zrobienie to node'em. Mam za zadanie wysłać formularz, zwalidować go po stronie serwera i ewentualne errory wysłać spowrotem do klienta i je wyświetlić i to za pomocą node.

Powiedziałby mi ktoś krok po kroku jak to ma wyglądać? (nie prosze o rozwiazanie tylko o wytlumaczenie) Kumam o co chodzi w node ale nie wiem jak się za to zabrać, także prosze nie odsylać mnie do tutoriali tylko wytlumaczyc jak to zrobic :) dziękuję.

2 odpowiedzi

0 głosów
odpowiedź 18 czerwca 2017 przez maciej.tokarz Nałogowiec (27,280 p.)
wybrane 19 czerwca 2017 przez Bartlomiej
 
Najlepsza

Witaj,

po stronie serwera przykładowo:

router.post('/change-password', function (req, res) {
  var currentPassword = req.body.currentPassword
  var newPassword = req.body.newPassword
  var userId = req.decoded.userId

  if (!currentPassword || !newPassword) return res.status(401).send({success: false, message: 'No credentials provided.', errorCode: '0004'})
  if (currentPassword === newPassword) return res.status(401).send({success: false, message: 'Unspecified error.', errorCode: '0000'})

Po stronie klienta możesz obsłużyć błędy np. w taki sposób:

function CustomError (errorCode) {
  this.name = 'CustomError'
  this.errorCode = errorCode || ''
  var error = new Error(this.errorCode)
  error.name = this.name
  this.stack = error.stack
}
CustomError.prototype = Object.create(Error.prototype)
angular.module('app').factory('$exceptionHandler',
  function ($injector) {
    return function (exception) {
      var modalService = $injector.get('modalService')
      var $translate = $injector.get('$translate')

      modalService.showModal({
        templateUrl: 'views/error.html',
        controller: function (close) {
          var self = this

          if (exception) {
            if (exception.errorCode) {
              $translate([exception.errorCode]).then(function (translations) {
                self.message = translations[exception.errorCode]
              })
            } else if (exception.message) self.message = exception.message
            else self.message = exception.substring(0, 100)
          } else {
            $translate(['0000']).then(function (translations) {
              self.message = translations['0000']
            })
          }

          self.close = function () {
            $('.modal-backdrop').remove()
            close()
          }
        },
        controllerAs: 'error'
      }).then(function (modal) {
        modal.element.modal()
      })
    }
  }
)

Kod zawiera moje dodatki - pokazanie błędu w wyskakującym oknie.

Natomiast samo odebranie błędu:

var request = {
        method: 'POST',
        url: String.format('{0}system/users/change-password', config.apiBaseUrl),
        headers: {'token': localStorage.token, 'Content-Type': 'application/json'},
        data: {currentPassword: self.currentPassword, newPassword: self.user.password}
      }

      $http(request).then(function () { close() },
      function (e) { ShowError(e) })

No i funkcja ShowError:

function ShowError (e) {
  if (e.data.errorCode) throw new CustomError(e.data.errorCode)
  else throw new Error(e.data)
}

Generalnie chodzi o wykorzystanie $exceptionHandler w NG.

M.

–1 głos
odpowiedź 18 czerwca 2017 przez racmo Obywatel (1,320 p.)
Poczytaj o socket.io, możesz za pomocą tej biblioteki łatwo przesyłać dane do klienta bez odświeżania strony. Klient po odbiorze danej wiadomości z informacją o błędzie mógłby wyświetlać jakiś komunikat np. z użyciem jQuery.
komentarz 18 czerwca 2017 przez Bartlomiej Bywalec (2,480 p.)
dzieki

Podobne pytania

0 głosów
1 odpowiedź 910 wizyt
pytanie zadane 21 czerwca 2017 w JavaScript przez Bartlomiej Bywalec (2,480 p.)
0 głosów
0 odpowiedzi 100 wizyt
pytanie zadane 13 kwietnia 2016 w Inne języki przez michcio Nowicjusz (120 p.)
+1 głos
1 odpowiedź 132 wizyt
pytanie zadane 30 stycznia 2020 w Inne języki przez TheMartian Początkujący (250 p.)

92,551 zapytań

141,400 odpowiedzi

319,531 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...