Dag 25 (week 5) - Het subtiele verschil tussen de volgende () en de terugkeer ()

Ik wil de dag samenvatten voordat ik het verschil bepaal tussen het aanroepen van next () en next ().

Onze typische Friday Huddle bestond uit een aantal aankondigingen, carrièrediensten en enkele voortgangsplannen en een paar presentaties waaraan we werkten. Door onze feedback te geven, verbeteren we ons gesprek over de code. Ik denk dat dat een goede zaak is, we willen hier graag meer tijd aan besteden. Een van mijn suggesties om verder te gaan, is om de officiële codes op Github te bekijken, om te leren hoe we de tools kunnen gebruiken die we gebruiken om de codes van anderen op de werkplek te bekijken en te interpreteren.

Ik had een één-op-één bijeenkomst over mijn cv en solliciteerde naar brieven aan bedrijven waarvoor ik wilde solliciteren. Iedereen is zo georganiseerd en zich bewust van de voortgang. Ik kan zeggen dat je diepgaande ervaring en kennis hebt over het vinden van een baan in softwareontwikkeling. Ik hoop dat ik deze informatie kan krijgen en aan het einde van deze training kan gebruiken om een ​​baan te vinden.

Over het verschil tussen het aanroepen van next () en next (()) merkte ik dit een paar dagen geleden voor het eerst op toen ik enkele van de nachtelijke huiswerkcodes doornam. Zo was het.

app.get ('/ post', function (req, res, next) {Post.findById (1234). dan (function (post, err) {if (error) {return next (err);} if (! post ) {var notFound = new Error ('Message not found!'); notFound.status = 404; return next (notFound);} res.send (post);});});

Hier kijken we naar een GET-verzoek op de track / post. Bij het terugbellen van een oproep lijkt het erop dat we bellen naar Post.findById, wat waarschijnlijk een databasequery is. Omdat het gaat om het koppelen van de database en het teruggeven van de belofte. Dan is het duidelijk - kijk in de functie. We zien met name dat als (fout) waar is, we worden geroepen om terug te keren naar de volgende (fout). Dan hebben we nog een (! Post), het zal terugkeren (niet gevonden) en uiteindelijk res.send (post), wat het resultaat zal sturen als we geen fouten hebben gemaakt en het bevat wat informatie. ). retourneer het databaseverzoek naar de browser.

In andere voorbeelden zou ik iets soortgelijks zien.

app.get ('/ foo', Check CheckRegging (req, res, next) {if (! req.user.registr) {// Ga naar het volgende pad als de gebruiker niet is geregistreerd // // getRegration mislukt. err) res.json (data)});});

In dit voorbeeld noemen we gewoon ('route'). Dus de natuurlijke vraag is: wat is het verschil tussen het gebruik van terugkeer?

Zoals ik vandaag weet, verlaat de volgende () aanroep binnen de route de functie niet onmiddellijk en gaat niet naar de volgende route. In dit geval wordt de rest van de route geëvalueerd en aangezien de volgende () wordt aangeroepen, is het niet nodig om het verzoek op te lossen en gaan we gewoon naar de volgende geschikte routemanager.

Neem snel een notitie: als u het verzoek niet binnen de route oplost, onthoud dan dat Express niets naar de browser stuurt en u ophangt.

Dus als u het volgende () nummer binnen de route belt, zegt u eenvoudig dat de rest van de route moet doorgaan en door moet gaan naar de volgende geschikte route.

Vergelijk dit met het volgende () gesprek binnen de route. Het belangrijke verschil is dat wanneer u de volgende () aanroept, de uitvoering onmiddellijk de functie verlaat en naar de volgende overeenkomende route gaat. Het ziet eruit als een uitzonderingsfoto. Er is iets gebeurd in onze reisroute en we willen gewoon de code die op de route achterblijft overslaan en gewoon doorgaan naar de volgende geschikte route.

Mijn probleem was om een ​​verzoek naar MongoDB te sturen, waar al mijn gebruikersnaam en wachtwoord voor mijn app zijn opgeslagen. Wanneer ik een POST-verzoek ontvang dat de klant de door hem opgegeven gebruikersnaam en wachtwoord heeft, moet ik de query uitvoeren om te zien of er een link in de database is. Dit is een asynchrone oproep met een terugbelfunctie. Wat Express betreft, het zal doorgaan met het uitvoeren van mijn code, wachtend op het terugkeren uit de database.

Het betekent dat het slecht voor me is. Aangezien de Express wacht om terug te keren uit de database, wordt de uitvoering uitgevoerd en zal ik het foutbericht beginnen te zien.

Fout: kon geen kopteksten installeren na verzending

Deze Express-snelheid zal doorgaan als ik het niet echt wil. Toen ik return next () wilde gebruiken, gebruikte ik next ().

Het was te groot om me dat vandaag te realiseren. Verbaasd over wat het verschil is tussen de twee klokken, en het is leuk om de cyclus af te sluiten die een paar dagen geleden is geopend. Ik kan nu teruggaan en mijn code voor dit project wissen.

Een laatste ding: vandaag kwam er een nieuw wekelijks project uit. We moeten een webpagina coderen waarmee je het klassieke spel van Hangman kunt spelen. Ik doe het dit weekend! :-)