>> Tātad, ar šo tiek teica,
tikai sava veida vienkāršs ievads prototipu
un JavaScript objektu modelis.
Mēs nebrauksim, lai pārslēgtos rīku mazliet runāt
par vairāk JavaScript serveris un grāmatplauktu bibliotēka
un savienojuma Knex bibliotēka.
Tātad, jūs faktiski var vienkārši -
Ja jūs meklēt Bookshelf.js tas būtu diezgan viegli
atrast, būtu vispirms rezultātu, un grāmatplauktu
kā David minēts tikai dod daudz struktūru
ap JavaScript objektiem un strādā ar viņiem relationally
relāciju datu bāzēm.
Tātad, daudz līdzīgas iezīmes kas ir tiešām ļoti iedvesmoja
ko Laravel ir ORM kā arī Backbone.js,
kas ir front end MVC bibliotēka, kas ļauj jums
strukturēt savu kodu, līdzīgs tam, ko man rādīja
ar piemēriem prototipi, kur jūs varat -
nevis tikai patvaļīgi throwing nodarbības
par savu viedokli šeit un tur.
Tas dod jums modeļus un kolekcijas tiem modeļiem
, kas ir paredzēts, lai darbotos kā kārtot vienu punktu patiesības
par datiem jūsu pieteikumu.
Un tad jūs klausīties, kā tās modeļi mainās, jūs sakāt, OK,
atkal padarīt šo veidni šeit un tas viens nekā šeit
un ne tikai pievienot klasi šeit pievienot klasi tur un veida pick
gada pārslēdzējus un padarīt spiderweb no jQuery kodu.
Tas dod vairāk klases bāzes struktūru, lai atsevišķiem gabaliem,
bet svarīgs komponents ka bibliotēka ir modeļi
, kas ir līdzīga struktūra , ko grāmatplauktu modeļiem darīt.
Tātad, ja jūs esat iepazinušies ar Grāmatplauktu jūs diezgan arī
diezgan pazīstams ar Backbone.js modeļus,
un es ieteiktu ņemot apskatīt to.
Tātad, daži no galvenajām iezīmēm
ka tas dod jums ir tikai spēja noteikt datus par objektu
zvanīt atnest, kas atgriež atsevišķu ierakstu
no datu bāzes, izveidotu attiecības kā līdzīgas
ko jūs jārisina ietvaros, kas Laravel
kur jūs varat teikt Pacientam uzstādīt rekordu metodi
un saka, tas ir ieguvis ierakstu
ja ieraksts objekts Tabulas nosaukums veselības kartes.
Paskatīsimies.
Ir daudz - tā pieder -
tikai sīkumi, ka jūs esat diezgan līdzīgi -
diezgan pazīstams ar jau, bet JavaScript.
Un ar kapuci, uz grāmatplauktu,
tā izmanto vaicājumu veidotāju sauc Knex.js.
Tātad, tas ir Knex, knexjs.org.
Tā ir atsauce uz rotaļlietu, ja kāds ir kādreiz ir bijusi ar to.
Bet tas ļauj jums - in Līdzīgā veidā, lai jQuery,
jūs vienkārši veida radītu ķēdes dažādām metodēm
ka jūs aicināt uz jūsu datubāze rinda, lai jūs varētu -
jūs sāku, sakot Knex un tabulas nosaukums.
Tā, piemēram, Knex lietotājiem, izvēlēties, kuras kolonnas vēlaties,
kur, un ir atšķirīga, ja conditionals, un jūs varat būt
Un kur, vai, ja, kur starp, ja ne,
jūs tagad, nosaka līniju.
Jūs varat norādīt atšķirīgas pievienojas starp datu bāzes tabulām
kas grāmatplauktu izmanto iekšēji izveidot sava veida maģija
ap hasOne, hasMany, belongsTo, belongsToMany.
Un tā kombinācija
no diviem ļauj jums darīt diezgan daudz, ko jūs vēlaties izmantot
ar sistēmu, piemēram, Laravel ziņā
Funkcionalitātes darbu ar datu bāzēm.
Tātad, iesim uz priekšu un veikt apskatīt vienkāršu piemēru
par Express app, kas izmanto šiem modeļiem
un kolekcijas Grāmatplauktu jazz [fonētiskā].
Tātad, es esmu, kas izveidota tikai vienkāršs pieteikums šeit.
Es attīrīta no daži sīkumi kas tika inicializēšana Express
un pārvietot, ka stājas init katalogs, kas es izveidojis.
Viens no nice lietas par strādā ar Express, kā paredzēts
lai Laravel ka tur ir tiešām nav daudz izpildīti
par jums tradicionāls.
Tātad jūs varat izveidot katalogi -
tas nav īsti jums visai daudz strādāt pie.
Tev tikai sava dažu pamata iestatījumus un pēc tam -
bet tas vienalga kur jūs viņus.
Jums nav jābūt kontrolieris direktorijā.
Jums nav nepieciešams, lai būtu modeļus direktoriju, config direktorijā.
Jūs varat veida radīt tiem, kā jūsu projekta vajadzībām
un noteikt lietas ceļu ka jēgas visvairāk jums.
Tā vietā, visiem Tas express tekstveidnes
Pamata app.js es tikko teicu app vienāds nepieciešama Pr / Express.
Un tā init,
inicializēšana mape Man vienkārši ir Izsaki šeit
un tas prasa Express, zvani iestatīšanas funkcija, zvani -
izveido skata dzinēju, JSON parsētājs, viss, kas.
Tāpēc tagad, pieņemsim turpināt uz leju.
Tāpēc es esmu vajadzīga Protams instruktors sanāksme
un prasības modeļiem.
Tātad šie ir mapē, kas Es tikko nolēma nosaukt modeļiem.
Tā nav jābūt, ka veids, tomēr tas ir jēga,
bet modeļi ir tikai diezgan bieži, tāpēc es ieteiktu to.
Bet - So iesim kursam.
Es domāju, ka es esmu, izmantojot - jā, un piemēri
noteikti šeit ir balstīti ap kursu modeli.
Tāpēc pieņemsim tikai ņemt apskatīt to.
Tātad, tagad, tikai no Pirmajā rindā no šī modeļa,
Es esmu jau pieprasot kaut kas cits.
Tātad, ja jūs paziņojuma mezglā Jums vajadzētu būt nepieciešama
vai jūs gatavojas galu galā prasa veselu ķekars
un dažādi faili , kas atrodas
dažādās vietās savu pieteikumu.
Un relatīvie ceļi lai kur jūs atrastos
savu pašreizējo piemērošanu,
ja tas ir augstākā līmeņa jau definēta kā jūs instalēt to
ar MPM, piemēram, plaukts vai Knex vai Express vai kaut ko,
tie nav radinieks.
Jā? Tuvinātu vairāk?
OK. OK. Tātad, jūs gatavojas galu galā prasa veselu ķekars
vienkārši dažādi failus jūsu kods, kas ir labs un slikts.
Labs veids, kā jūs zināt, kur lietas ir, un tas nav sava veida
burvju par to, kas ir notiek saskaņā ar kapuci,
kas var patiešām būt mulsinoši
ja jums ir ļoti smagie Java -
vai ļoti smags sistēma, piemēram, Laravel, kāda veida saka:
Mēs ejam, lai rūpētos tas tāpēc jums nav
pieprasīt visu bet jums ir
zināt, kā viss darbojas, lai izmantotu to.
Ja kā šajā gadījumā, tas ir ļoti vienkārša, kā to
kur viss ir, viņi tikai gali
ar to, ka nedaudz vairāk rakstīt.
Tāpat kā pusē man patīk lai izmantotu, tur ir spraudnis
ja jūs izmantojat akls tekstu
kur var ierīkot mezglu moduļi palīgs un jūs varat sākt
rakstīt, piemēram, instruktoru un tas rada relatīvo ceļu
, kur jums ir, ka kods failu, veida noderīga.
Tātad, protams, modelis ir nepieciešama bāzes šeit
un tad bāzi intern prasa init / grāmatplauktu
un tad plaukts, tā prasa augstākā līmeņa grāmatplauktu
un pēc tam initializes to ar inicializēts Knex piemēram,
kas nosaka klienta nosaukumu
un savienojums uzstādījumus bāzē.
Tāpēc es esmu tikai izmantojot vienkāršu gadījums Turpinājums Pro, kas -
MySQL, es esmu piekļūt ar Turpinājums Pro un tas ir tikai sava
līdzīga datubāzes izveidots kā mums bija
Pirmajā parauga pieteikumu ar kursu katalogu.
Tātad, es noteikt manu savienojums iestatījumi šeit,
un tie visi ir dokumentēti uz Knex.js projekta lapu
par to, kā setup šie savienojumi.
Tātad, man tagad ir mana bāzes modeli.
Un, kā jau es teicu, ar prototips pārmaiņas,
tā, ka faktiski var būt sava veida ir daudz -
piebilst daudz tekstveidnes ar savu kodu, lai konvencija
kas ir pielāgots ar Backbone.js
un tagad Bookshelf.js ir pievienot šo pagarināt metodi
kā statisku īpašumam JavaScript objekti,
kas dod tai veida gandrīz klases bāzes mantojuma daba
kur, ja jūs zvanāt paplašināt jūs varat izveidot jebkuru
prototipa metožu ka vēlaties šeit
un tad jūs varat - jebkurš papildu statiskās metodes
ka jūs varētu vēlēties, jūs varat noteikt tos sev
šeit, lai es varētu pagarināt ar - lai, ja, piemēram,
vairāki modeļi vajadzīgs parādīt vārdu un šo saņemtu vārdu.
Tātad, šeit, es saku displeja nosaukumu modeli
pēc noklusējuma ir neatkarīgi no tā nosaukums īpašums ir citādi atgriešanās
bez nosaukuma.
Un tagad par katru modelis, kas ir -
, kas paplašina šo bāzes modeli, es tagad ir displeja nosaukumu metodi
par prototipu ķēde kaut kur.
Un, ja es gribu to pārrakstīt Es varu tikai noteikt to - noteikt, kāda -
getName būtu šeit.
Un tas ļauj jums, lai atdarinātu klasiskā mantojuma
JavaScript, kas var būt jauki, īpaši attiecībā uz lietām
kas aizdot paši tiek klasē, pamatojoties, piemēram, objektu modeļus.
Tāpēc pieņemsim lēkt atpakaļ pieteikumu kodu.
Tāpēc es esam ieguvuši maršrutu tikai slash, tikai par manu indeksu
un tad slash kursus.
Un abi no tiem zvanāt renderCourses metodi.
Tātad vēlreiz, funkcijas pirmās klases, un var nodot
kā argumentus metodēm.
Tātad, šajā app.get, Es zvanu -
Es esmu iet renderCourses kā argumentu.
Un padarīt - vai funkciju var setup, piemēram VAR -
kā man bija darīt agrāk VAR renderCourses vienāds funkcija
vai arī tie var būt vienkārši funkcija renderCourses.
Tas nepadara pārāk daudz atšķirību.
Jūs faktiski var būt kāda sauc nosaukums funkcija
izpausmes, kuras VaR renderCourses vienāds
funkcija renderCourses.
Un iemesls, vēlas, lai būtu nosaukt funkcijas īpaši
mezglā ir, ka tas dod jums tīrāku -
saprotamāki kaudze izsekot.
Tātad, ja jums ir visai ķekars
anonīmu funkciju tā teikt -
ja jums ir kļūda Jūsu kodu You'Ll -
Jūs nezināt, kas darbojas tas zvana, jūs ir meklēt
pie kodu un līniju skaits
un tas ir dažreiz vieglāk tikai vizuāli parsēt
kad jūs faktiski ir vārdi
par funkciju paši servera pusē.
Tātad šis renderCourses, sauksim mezglu progr -
tāpēc es esmu klausoties uz Core 3000 [fonētiskā].
Un tā tas viss dara labi Šeit ir tikai iegūt visu
kursi no datu bāzes.
Es neesmu pat ierobežojot to tāpēc tas dara ļoti daudz
Rindu tā atgriezties.
Un, lai to izdarītu,
par kursa modeli tur ir statisks īpašums
sauc kolekcija.
Un tāpēc es tikai aicinu to - I teica, ka radīt jaunu kolekciju
par šo kursu, un pēc tam atnest to,
un pēc tam atgriezties kursus Kolekcija šeit solījumu.
Tātad iekšēji, Dāvids - Pēdējā pusgada mācīja mazliet
par solījumiem un solījumiem, ir izmanto ļoti lielus līdzekļus gan Knex
un grāmatplauktu, jo tas aizdod -
Tas dod jums spēja būt ķekars
no dažādu asinhrono zvanus un veida pievienoties, tad kopā
vai atnest kaut ko, un pēc tam
ar šo aicinājumu citu asinhrono datu bāzes zvanu
un atdod šo vērtību un tad pāriet uz nākamo, tad
un nākamais tad un tad ir nozvejas pašās beigās, lai kārtotu
mīmisko asinhrono mēģināt nozvejas uzvedība ar asinhrono kodu,
tāpēc, ka jūs redzēt to tagad
bet tas ir vēl grūtāk, kad sāc ar to nodarboties.
Asinhrono kods ir tikai visur
ar servera puses JavaScript un tiešām daudz lielākā mērā
nekā esat pieradis, ja jūs esat darījuši JavaScript
uz klienta pusē.
Tāpēc, ka ļoti, ļoti palīdzēja jums tur.
Bet tikai, lai parādītu jums atkļūdotājs paziņojums
, ka es runāju par to, kas mezglu inspektors instrumenti,
Es iešu uz priekšu un mest atkļūdotājs līniju šeit
ar renderCourses funkciju un redzēt, kur tas noved mani
kad es - tik mezglu Inspektors var uzstādīt
darot NPM instalēšana ar G karogu,
kas nozīmē Global Mezglā inspektors.
Un tas būs atnest to NMP un instalējiet to visā pasaulē
Jūsu pieteikumus lai jūs varat zvanīt tas
no komandrindas.
Esmu jau uzstādītas tas tāpēc es iešu uz priekšu un -
patiesībā tas varētu būt jāgaida tas būs vienkārši ņemt,
ņem divas sekundes.
Un ko mezgls inspektors atkal ļauj jums
to darīt, ir būt šo galvām versija atkļūdotājs konsoles
ka esat pieradis, strādājot uz klienta pusē un varēs
apstāties, vienkārši pievienojiet norādīts atgādina savu kodu.
Apstāties izpildi un veikt paskatās, kas notiek,
kas būtu patiešām noderēs, ja funkcija
tāpat bija pieejamas
kad atkļūdošana PHP kodu, es esmu pārliecināts.
Tāpēc pieņemsim tikai ņemt apskatīt to.
Tāpēc es varu tikai aicināt mezglu inspektors
un tas būs teikt, apmeklējiet šo URL ports 5858, lai sāktu debugging,
tas ir tikai noklusējuma par to, kā tā sākuma.
Tātad, es esmu tagad ir ieguvuši - tur ir nekas šeit notiek
jo man ir nepieciešams, lai sāktu.
Tāpēc mezglu strupceļš [fonētiskā] atkļūdot karogu un pēc tam app.js.
Tāpēc tā saka atkļūdotājs klausīšanās portu 5858,
Express servera klausīšanās no 3000.
Tāpēc mēs esam labi iet.
Ļaujiet man tikai atsvaidzināt to.
Un tagad es varu redzēt app.js kods, kas man bija tikai meklē
bet šeit konsole.
Tāpēc tagad, ja mēģinu palaist to, jūs varat redzēt, tas apstājas.
Tas ir tikai gaida, jo tā Visa koda izpilde tagad
apstājās šajā atkļūdotājs līnija, kas es esmu likts tur.
Un es varu tagad serveris -
[Nedzirdams Piezīme]
Ak, jā. Kas ir atslēgvārds īsceļu, lai palielinātu ekrāna?
Ak tur ir.
Got to. OK.
[Pauze]
Ak, tas nav meklējat [Fonētisko], ka.
Tātad, kursi ir ļoti liels
jo es to nedaru ierobežot klauzulu vai kaut ko,
tas ir tikai ienesot visas datubāzes kursu
kas ir daudz no tiem.
Un tā - kas ir objekts
, kas faktiski varētu crash piezīme inspektors instancē.
It's - OK.
Ļaujiet man darīt limitu un tad mēs varam apskatīt
ja tas nav pievilcīgs simtiem kursu.
Tātad, nogalināt serveri un inspektors
un es darīšu, protams Kolekcija vaicājumu ierobežojums 20.
Tātad, grāmatplauktu, atšķirībā Laravel
kur jūs varat zvanīt ierobežot tieši vai zvaniet jebkura
Šo SQL metodēm ka jūs izmantojat
tieši uz ORM instance.
Anytime, ka jūs izmantojat tikai SQL metode, kas ir paredzēts
in Knex, jums ir zvaniet uz vaicājumu, lai kārtotu
un savlaicīgi vaicājuma ķēdē.
Un to var izmantot vai nu funkciju,
lai jūs varētu teikt, funkcijas šis ierobežojums 10 vai jūs to saucat
norādot, kuras metodi jūs vēlaties, lai izsauktu
uz Knex instancē un pēc tam, kas vērtība.
Tāpēc mēs gatavojamies darīt ierobežot 20 un tad noteikti.
Mēs faktiski nav nepieciešams atkļūdotājs šeit
jo mēs varam tikai noteikt robežvērtības
un kas padara to vieglāk.
Labi.
Tātad, pieņemsim noteikt pārtraukumpunkts tieši šeit un mēģināt ielādēt to.
Nepareizi līniju.
Tieši šeit.
[Pauze]
OK. Tāpēc tas atkal apstājās.
Tāpēc tagad, kursi ir objekts ar garumu 20
un mēs varam redzēt visas dažādās modeļi, ka tas ir ienesta
no datubāzes tieši šeit tāpēc es esam ieguvuši modeļa objektu
kas ir iekšpusē atribūti īpašumu
objektā ir visas lietas, ka tas ir atrasts datu bāzē.
Notikumi, kas ir reģistrēta
lai jūs varat reģistrēties dažādiem notikumiem,
Piemēram, kad Modelis tiek dzēsts
vai tad, kad tas ir fetched,
Jūs varat uzstādīt dažādas īpašībām vai mainīt lietas.
Tur ir daudz dažādu āķiem un tie visi ir dokumentēti
Jo Bookshelf.js dokumentāciju, kas ļauj jums
darīt veida jebko ka jūs patiešām vēlaties darīt
ar saviem modeļiem un kolekcijas.
Jūs varat - tie ir domāti jābūt ļoti pielāgojama
un ļoti viegli Jūs tos pielāgot
vajadzībām savu pieteikumu.
Bet tikai meklē, izmantojot šeit
Es varu redzēt, kas atšķiras kursi ir pieejami.
Un šajā gadījumā, es faktiski nebija atnest
ar jebkuru citu informāciju, izņemot tikai paši kursi.
Bet līdzīgi kā Daiļrunīgs ORM jūs varat iestatīt
up attiecības, tāpēc kurss pieder daudziem instruktors.
Tātad, ja es iet uz priekšu un pārtraukt piemērot,
lēkt uz šo atnest zvanu, var norādīt dažādas iespējas
ka vēlaties iet gar to.
Un viens no tiem ir Spēja ielādēt saistītās kodu
norādot withRelated instruktori tad kursus.
Tāpēc iesim atpakaļ un svaiga Tas šeit un apstāties vēlreiz.
Tāpēc tagad, kursi iebilst, Modeļu pašu numuru,
bet tagad katrs modelis ir attiecību hash
kas ir instruktori ka tas ir saistīts ar.
Tāpēc šis kurss, piemēram,
kas ir kurss 082 ir divas saistītās instruktors modeļiem.
Un jūs jau tagad var redzēt, kā daudz vieglāk, tas ir, lai sakārtotu
Vizuāli strādāt ar nekā kad jūs nodarbojas ar lietām
ka jūs veida mainīt kodu un tad mēģiniet vēlreiz PHP.
Tas, ka jūs varat vienkārši pilnībā apturēt izpildi
un novērtēt to, kas ir šeit, un - konsolē, -
zoom out, kursi ir, jūs zināt,
ko tas vietējais joma mainīgie ir pieejami
, un šobrīd tas ir globāla objekts, jo kā jūs redzēja,
ja jūs zvanu ar īpašo kontekstu, tas nav gatavojas
lai būtu kaut kas būtisks.
Un tad, - ļaujiet man parādīt vēl dažus piemērus
Īstenojot solījumus.
Tā vietā, lai to izdarīt withRelated instruktori šeit es esmu
gatavojas iet uz priekšu, un pārvietot to atnest un tad kursus,
Es esmu gatavojas atgriezties courses.load instruktori.
Un tad - tad jūs saucat tad.
[Pauze]
Tātad šajā brīdī, kursiem jābūt atvērtiem
ar instruktoriem, kas ir asinhronas darbība.
Bet gan tāpēc, ka mēs esam to atpakaļ no solījuma, nākamais vērtība
jo tad ir kāds šī asinhrono zvans atgriež
kas šajā gadījumā slodzes ir metode, plaukts
kas faktiski atgriežas savākšana pati.
Tāpēc tas ir iekraušana instruktori tur
un tad jūs varat norādīt - ja tas ir tikai viens īpašums,
Jūs varat norādīt šo kā virknes, pretējā gadījumā,
jūs varat darīt instruktori un prasības
kā metodi - sorry, kā masīvu.
Un tad, ja jūs vēlaties, lai iegūtu tiešām iedomātā un ierobežot jebkādu
no tiem dots ielādē, jūs var norādīt to kā hash
ar instruktoru un tad kādi vēlaties ierobežot vaicājumu on.
Tātad, es gribētu, lai ielādētu visu instruktori uz kursiem, ja -
tāpēc QB uz vaicājumu celtnieks ja statuss ir aktīvs.
Un jūs varat iegūt patiešām iedomātā ar jebkuru
no saistīto vaicājumu vēlaties veidot.
Bet tikai tagad, mēs ejam pieturēties pie tikai instruktori
un mēs esam atpakaļ, ka vērtība
tā, tad nākamais, tad būtu ir visas kursi piekrauts
pareizi.
Un, ja tur bija kļūda jebkurā posmā šajā ķēdē,
tas nolēkt nozvejai.
Tāpēc iesim uz priekšu un palaist to.
Lai katru reizi, - atšķirībā PHP, viens negatīvie ir
", Jo mezgls" ir ilgi darbojas process, jums tiešām ir nepieciešams
lai apturētu mezglu procesu kā jūs atjaunināt savu kodu,
jo versija, ka tas ir darbojas gatavojoties laiks ir,
versija kods, kas bija piekrauts
kad sāka ne kas jums ir veida
atjauninātā savu kodu ar kopš tā laika.
OK. Mēs noteikt pārtraukumpunkts šeit, šeit un atsvaidzināt.
[Pauze]
Ak, es tiešām nebija atsvaidzināt šo lapu, vai nu
tāpēc tas bija par veco procesu.
Tāpēc jums atsvaidzināt gan šo un mezglu inspektors.
Tātad tagad mēs redzam kursus.
Ja mēs vienkārši ņemt paraugu viena no šīm modeļos
mēs varam redzēt, ka attiecības objekts ir tukša, bet tagad -
un iemesls, ka jums ir nepieciešams noteikt robežvērtības, ir labi,
Es teicu, ka jūs varat lēkt kaudze izsekot
un redzu, ka jūs zināt, kur tas notiek app.
Tāpēc tagad es redzu, kas ir notiek slodzes metodi,
kas es esmu definēts gada kolekcijās.
Tā veida "vēlas slodzes attiecības pārnešanai jau ".
Un jūs varat soli pa un redzēt pozīcijai
ja tas stuff ir iet, kas ir lieliski.
Ja jums ir kaut kas kas ir sadalīti ar savu kodu,
tas ir throwing dažas kļūdas un jūs, piemēram, es tiešām gribu
lai redzētu, kur tas notiek.
Bet, tiklīdz jūs satikt kaut asinhrono, -
tā iet uz nākamo atzīmējiet, notikuma cilpas
un jūs zaudējat savu - jūs zaudējat savu vietu
mezglā inspektors.
Tātad jums ir nepieciešams teikt, "Labi, kad es pazaudēju to,
tas ir nepieciešams, lai apturētu tagad Šajā rindā no jauna. "
"Iemesls, ja es tur hitting uz leju, uz leju kaudze,
tas ir iespējams, tikai aizgājuši prom, tad es ne noteikt šo
līnija 22 zilo pārtraukuma līniju.
Tāpēc tagad, ja es paskatos kursos šeit,
tas būtu par saistību instruktori
un tad ir instruktori pievienot tos.
Tātad, jūs varat redzēt, ka es atgriezos solījums no pirmās solījumu
un tad jūs varat pastāvīgi to, ka uz leju līniju.
Tik dažādi solījums, sola bibliotēkas,
Es mēdzu viens sauc Bluebird kas ir patiešām noderīga.
Tā piebilst, daudz jauku par to mainīt asinhrono -
aicinājumu mainīt atpakaļ bāze kodu uz sīkumi
, kas strādā arī ar solījumiem.
Bet - piedodiet [dzirdams], kas Es gribēju teikt to tur.
Pieņemsim to apskatīt lai gan -
tāpēc pieņemsim, ka tur bija problēma, ienesot kaut ko.
Tāpēc man ir šī cita ceļu atrast sauc kursu ID.
So let 's do kursu 2.
Vai es varu saņemt - JSON kursu.
Un tas pats par sevi [nedzirdama].
[Pauze]
Es smarža kaut ko nepareizi šeit.
Ne par 3000, man bija inspektors tab Chrome.
OK. Tāpēc iesim kurss - JSON kursu 1.
Un tas atgriežas tikai JSON formātā, protams, piekrauts
ar dažiem pasniedzējiem.
Bet, piemēram, es gribēju dot šeit ir tas, ka,
Es daru JSON kursa ID.
Un arī atnest parametriem, Es esmu norādot nepieciešama patiesa,
kas ir iespēja, kas ir dokumentēts plaukts
ja tas ir saprotams, ka, "ja, Es mēģinātu atrast šo kursu
un tas nav tur, tad mest kļūda. "
Un kas būtu nozvejotas ar nozvejas bloķēt leju šeit.
Tāpēc iesim uz priekšu un lēkt atpakaļ uz mezgla inspektors un mēģināt
un lauzt šo un redzētu, ko mēs saņēmām.
Tā ļauj noteikt pārtraukumu šeit uz JSON kursu.
Labi.
Es iešu uz JSON kursu un Es tikai izvirzīti dažās -
[Pauze]
Tas var būt nedaudz grūts Dažreiz, kad jūs mēģināt
vadīt kuriem viens ir atjaunots
un kas nav - redzēsim.
Tāpēc tas zvana kļūda tukša atbilde.
[Pauze]
Let 's mest atkļūdotājs šeit.
Jo cik mezgls faktiski optimizē
par JavaScript runtime tik ātri serverī,
dažreiz mezglu atkļūdotājs ir dažas kļūdas, kad jūs mēģināt
un kas kontrolpunkti dinamiski un jums tiešām ir nepieciešams
izmantot Termināls un nav line-by-line.
Tātad, pieņemsim redzēt, ja tas izpaužas mums to, ko mēs gribam.
Tāpēc es noteikti, app.get JSON protams id,
un es esmu, kas manu atkļūdotājs tur
nozvejas deklarācijā apakšā.
Atnest prasa taisnība, tas būtu - labi, ka mēs ejam, lauza.
Tātad, tagad es redzu ka tas pārtrauca
šajā pēdējā catch blokā jo withRelated -
vai tāpēc, ka ir nepieciešama patiesa noteikts un nav kurss
ar ID un šis lielais numurs, ar izņēmumu
kas tagad Emessage.
Un katra kļūda JavaScript ir kaudze īpašums
, kas nāk kopā ar to.
Tāpēc tas bieži vien ir noderīgas , lai, piemēram,
mierināt atteiktos e.stack.
Un es tiešām redzu kad es hit kļūda.
Tāpēc man kļūda tukšs atbilde, tas ir vēstījums
, kas tika nosūtīta pa grāmatplauktu.
Bet tagad, es varu paskatīties gada, pie zvanu kaudze un redzēt
ka plaukts dialekti SQL modelis 83,
šo tukšo atbilde kļūda tika izmesti.
Un tas ir, ja es minēts, tas ir dot anonīms
jo tas ir anonīms funkcija.
Ja tas būtu vārds funkcija Jums būs labākas idejas
ar kuru darboties faktiski cauri bez nepieciešamības iet
uz model.js kodu.
Lai gan tas ir domāts, lai būtu diezgan, diezgan lasāma,
lai es varētu redzēt, ka tiešsaistē.
Ko viņi pateiks man bija līnija 83.
Tātad, ja options.require un atbilde nebūtu,
tagad met jaunu tukša atbilde kļūda.
Tātad jūs varat redzēt diezgan vienkārši, kā tas darbojas.
Un iekšēji plaukts,
tur esam tikai vesela ķekars izmantošanas solījumiem.
Tātad jūs varat norādīt Promise.method
ar Bluebird bibliotēku kas uztur pareizu kontekstu
tas, atgriežoties solījums.
Un tāpēc man ir - es esmu saistošs vērtība šī līdzīgus
to, ko es gribētu minēts agrāk, bet izmantojot solījumus
, un tad es varu - ir jauns.
Tas var būt asinhronā vai ne, ja es gribu.
Un tad man dažas citas lietas, kas var būt
vai var nebūt asinhroni un Tad veidu lec pa šo.
Tāpēc Promise.all ir palīgs, kas daudz tautas bibliotēkām ir
kur var būt masīvs potenciāli var
vai arī var nebūt solījumi.
Un, kad visi tie ir pabeigta, jūs atpakaļ, ka
un tad lec uz nākamo līniju
un jūs varat redzēt, kā tas tiešām plakana piramīdu
ka jums, atzvanīšanas elle, jo tā zināms
ja jūs darāt visu ar atzvani pozīcijai.
Ir veidi, kā iegūt ap ka, bet solījumi ir viens
no labākajiem veidiem, manuprāt
lai patiešām saglabāt savu kodu tīrs un viegli lasīt.
Tātad tas ir tikai īss ievads JavaScript
un grāmatplauktu un Knex kopumā.
Un, ja tur ir kādi jautājumi, Es zinu, tas ir ton materiālu
lai veida mēģinātu vāks jo īpaši tāpēc valodās,
atšķirībā no vairuma, ka jūs esat iepazinušies ar tāpēc es tikai gribēju
lai padarītu to tā, ka vismaz Ja jums ir problēmas
ar savu kodu, jūs var kārtot ielēkt -
tas, ko es vēlētos darīt, ir veida lēkt bibliotēku
, ka es esmu, izmantojot, un redzēt, kā lietas tiek strukturēti.
Tur ir viens, ka man bija minēts agrāk saukta Backbone.js
un patiesībā tas ir [Dzirdams] par klienta pusē
lai palīdzētu nodrošināt Model View kontrolieris struktūra
savu kodu.
Bet tas tiešām ir norādēm dokumentācija avots
kas ļauj jums veida redzēt.
Tas ir patiešām labi dokumentētas, kas notiek,
kā tas ir paplašināšanā Ajax funkcionalitāti
vai notikums funkcionalitāti vai modeļi un kolekcijas kārtot
izskaidrot, kas ir notiek procesā.
Un, ja jūs saprotat pamati JavaScript
piemēram prototypal mantojumu un cik funkcijas tiek izmantotas
gan kā objektiem un vērtībām un nodarbības un viss.
Tas padara to daudz vieglāk , lai saprastu, kas notiek
par potenciāli bibliotēkas, kuras jūs izmantojat
un atkļūdotājs kodu un jāspēj kas nav banging galvu
pret sienu, jo Jums nav saprast, kā
dažādi gabali strādā, lai.