Dag 25 (Woch 5) - Den subtile Ënnerscheed tëscht nächste () an zréck nächste ()

Ier ech den Ënnerscheed tëscht der nächster Nofro () an der nächster nächster () zréck kréien, wéilt ech den Dag summéieren.

Eis normal Freideg Huddle bestoung aus e puer Ukënnegung, e puer Informatioun iwwer Karriärsservicer an de Plang no vir, an e puer Presentatiounen vu Projeten, op deene mir geschafft hunn. D'Iwwerleeung ass datt andeems mir eise Code presentéieren, mir besser um Code schwätzen. Ech mengen, dat ass eng super Saach fir ze maachen, ech wënschen just, datt mir méi Zäit haten et ze maachen. Eng vu menge Virschléi fir no vir ze réckelen ass datt mir méi offiziell Code Rezensiounen op Github hunn fir déi selwecht Tools ze üben déi mir am meeschte benotze wäerten op der Aarbechtsplaz fir de Code vun anere Leit ze iwwerpréiwen an ze kommentéieren.

Ech hat och e flotten een-op-een Treffen iwwer mäi Resumé an Cover Bréiwer fir d'Entreprisen, op déi ech mech interesséieren. Jiddereen ass sou organiséiert an informéiert iwwer de Prozess no vir. Ech kann soen datt et déif Erfahrung a Wëssen ass wéi een Job am Softwareentwécklung ze fannen. Meng Hoffnung ass datt ech dës Informatioun ka huelen an se benotze fir en Job um Enn vun dësem Training ze fannen.

OK, un den Ënnerscheed tëscht der Nennt nennen () an hannendru raus (). Ech hunn dat éischt e puer Deeg gemierkt, wéi ech e puer Beispillcode an der Nuecht Hausaufgaben hunn. Mir benotze Express fir Strecken ze definéieren, a wat ech gesinn hunn ass sou eppes.

app.get ('/ post', Funktioun (req, res, nächst) {
  Post.findById (1234) .then (Funktioun (Post, err) {
    wann (falsch) {
      nächste zréck (err);
    }
    wann (! posten) {
      var notFound = neie Feeler ('Post net fonnt!');
      notFound.status = 404;
      nächste zréck (notFound);
    }
    res.send (Post);
  });
});

Hei behandelen mir eng GET Ufro um Wee / Post. Am Callback géif et ausgesinn, datt mir eng Aart Opruff un Post.findById maachen, wat méiglecherweis eng Ufro fir d'Datebank ass. Well dëst ëmfaasst eng Datebank z'erreechen an e Versprieche zréckzekommen - wat kloer ass aus der Notzung vun .then - kucke mer an dës Funktioun. Speziell gesi mer datt wann (falsch) richteg ass, en Uruff fir d'nächst (err) zréckzekommen ass gemaach. Duerno hu mir en aneren wann (! Post) deen erëm e nächste Retour mécht (notFound), a schliisslech wa mir kee Fehler kréien an d'Post e puer Donnéeën huet, ruffe mir res.send (Post) wat d'Resultat schéckt vun der Datebank Ufro zréck an de Browser.

An anere Beispiller géif ech sou eppes gesinn.

app.get ('/ foo',
funktion checkRegistration (req, res, nächst) {
  wann (! req.user.registered) {
    // Wann de Benotzer net ageschriwwen ass, Fräilous op déi nächst Route.
    // getRegistration gëtt net ausgefouert.
    nächst ('route')
  }
}, funktionnéiert GetRegistration (req, res, next) {
  Registréierung.find (Funktioun (err, Daten) {
    wann (err) zréck nächst (err)
    res.json (Donnéeën)
  });
});

An dësem Beispill maache mer just en Opruff op nächste ('route'). Also déi natierlech Fro ass wat ass den Ënnerscheed tëscht Retour benotzen oder net?

Et stellt sech eraus, wéi ech haut entdeckt hunn, datt en Opruff un nächste () bannent enger Streck NET d'Funktioun direkt hannerlooss a weider op déi nächst Route fuert. An dësem Fall gëtt de Rescht vun der Streck evaluéiert a well d'nächst () ugeruff gouf, ass et net néideg d'Ufro ze léisen an mir kënnen einfach weider op den nächste passende Routerhandler goen.

Kuerz emol: erënners datt wann Dir d'Ufro net an enger Route léist, Express net eppes zréck an de Browser schéckt an Dir wäert hänke bleiwen.

Also, niewendrun nennen () vu bannen enger Route seet einfach Express datt et sollt mam Rescht vun der Streck weidergoën an da weider op déi nächst passende Streck.

Kontrast dëst mam Uruff Retour nächste () vu bannen enger Streck. De entscheedenden Ënnerscheed ass datt wann Dir den nächste zréck rufft (), verléisst d'Ausféierung direkt d'Funktioun an ass weider op déi nächst passende Streck. Dëst ass ähnlech wéi d'Behuelen vu Ausnahm ze werfen. Eppes ass an eiser Streck passéiert a mir wëllen all verbleiwen Code an der Streck iwwersprangen an just op déi nächst passende Streck sprangen.

Meng Fro vun haut war beim Versuch eng Ufro op MongoDB ze lafen, wou all meng Benotzernimm a Passwierder fir meng App gespäichert sinn. Wann ech op der POST Ufro sinn, déi e Benotzernumm a Passwuert krut, dat de Client just presentéiert huet, muss ech eng Ufro lafen fir ze kucken ob et e passende Rekord an der Datebank gëtt. Dëst ass en asynchronen Uruff mat enger Callback Funktioun. Wat Express betrëfft, ass et weiderhi mäi Code auszeféieren, waart Dir op d'Resultat aus der Datebank zréckzekommen.

Et stellt sech eraus datt ech schlecht ass fir mech. Zënter Express waart op Daten fir zréck aus der Datebank ze kommen, geet d'Ausféierung weider an ech fänken un dëse Fehlermeldung ze gesinn.

Feeler: Kann Header net astellen nodeems se geschéckt goufen.

Dëst gëtt Express weider wann ech et wierklech net wollt. Ech hätt nächste benotzt () wann ech wierklech wollt Retour nächst benotzen ().

Dëst ze realiséieren ass haut fir mech immens. Et ass flott fir den oppenen Schleif vun e puer Deeg fäerdeg ze maachen an d'Fro wat den Ënnerscheed an deenen zwee Appellen ass. Ech kann elo zréck a propper mengem Code fir dëse Projet.

Eng lescht Saach - den neie wöchentlechen Projet gouf haut verëffentlecht. Mir mussen eng Websäit kodéieren déi et erlaabt Iech dat klassescht Spill vun Hangman ze spillen. Ech probéieren dat dëse Weekend unzegoen! :-)