Mongoose er et JavaScript-rammeverk som vanligvis brukes i en Node.js-applikasjon med en MongoDB-database. I denne artikkelen skal jeg introdusere deg til Mongoose og MongoDB, og enda viktigere hvor disse teknologiene passer inn i søknaden din.
La oss starte med MongoDB. MongoDB er en database som lagrer dataene dine som dokumenter. Vanligvis ligner disse dokumentene en JSON-lignende struktur:
firstName: "Jamie", etternavn: "Munro"
Et dokument er da plassert i en samling. Som et eksempel definerer ovennevnte dokumenteksempel a bruker
gjenstand. Dette bruker
objekt ville da typisk være en del av en samling som heter brukere
.
En av nøkkelfaktorene med MongoDB er dens fleksibilitet når det gjelder struktur. Selv om i det første eksemplet, bruker
objekt inneholdt a fornavn
og etternavn
Eiendom, disse egenskapene er ikke påkrevet i alle bruker
dokument som er en del av brukere
samling. Dette gjør MongoDB veldig forskjellig fra en SQL-database som MySQL eller Microsoft SQL Server som krever et sterkt definert databaseskema for hver gjenstand det lagrer.
Evnen til å lage dynamiske objekter som er lagret som dokumenter i databasen er hvor Mongoose kommer inn i spill.
Mongoose er et Object Document Mapper (ODM). Dette betyr at Mongoose lar deg definere objekter med et sterkt skrevet skjema som er kartlagt til et MongoDB-dokument.
Mongoose gir en utrolig mengde funksjonalitet rundt å skape og arbeide med skjemaer. Mongoose inneholder for tiden åtte SchemaTypes at en eiendom er lagret som når den fortsetter å MongoDB. De er:
Hver datatype lar deg spesifisere:
I tillegg til disse vanlige alternativene, tillater visse datatyper å tilpasse hvordan dataene lagres og hentes fra databasen. For eksempel a string
Datatypen lar deg også spesifisere følgende tilleggsalternativer:
De Nummer
og Dato
Egenskaper både støtte angir minimum og maksimum verdi som er tillatt for det aktuelle feltet.
De fleste av de åtte tillatte datatyper skal være ganske kjent for deg. Det er imidlertid flere unntak som kan hoppe ut til deg, for eksempel Buffer
, blandet
, Objekt
, og Array
.
De Buffer
Datatype lar deg lagre binære data. Et vanlig eksempel på binær data ville være et bilde eller en kodet fil, for eksempel et PDF-dokument.
De blandet
Datatype gjør eiendommen til et "alt går" -felt. Dette feltet ligner hvor mange utviklere som kan bruke MongoDB fordi det ikke er noen definert struktur. Vær forsiktig med å bruke denne datatypen, da den mister mange av de flotte funksjonene som Mongoose gir, for eksempel data validering og deteksjon av enhetsendringer for automatisk å vite for å oppdatere eiendommen når du sparer.
De Objekt
Datatype spesifiserer vanligvis en lenke til et annet dokument i databasen. Hvis du for eksempel hadde en samling av bøker og forfattere, kan bokdokumentet inneholde en Objekt
eiendom som refererer til den spesifikke forfatteren av dokumentet.
De Array
Datatype lar deg lagre JavaScript-lignende arrays. Med en Array datatype kan du utføre vanlige JavaScript-arrayoperasjoner på dem, for eksempel push, pop, shift, slice, etc..
Før jeg gikk videre og genererte kode, ville jeg bare gjenskape det vi nettopp lært. MongoDB er en database som lar deg lagre dokumenter med en dynamisk struktur. Disse dokumentene lagres i en samling.
Mongoose er et JavaScript-bibliotek som lar deg definere skjemaer med kraftig skrevet data. Når et skjema er definert, lar Mongoose deg lage en modell basert på et bestemt skjema. En Mongoose-modell blir deretter kartlagt til et MongoDB-dokument via modellens skjemadefinisjon.
Når du har definert skjemaer og modeller, inneholder Mongoose mange forskjellige funksjoner som lar deg validere, lagre, slette og spørre dataene dine ved hjelp av vanlige MongoDB-funksjoner. Jeg snakker om dette mer med konkrete kodeeksempler som skal følges.
Før vi kan begynne å lage våre Mongoose skjemaer og modeller, må MongoDB installeres og konfigureres. Jeg foreslår at du besøker MongoDBs nedlastingsside. Det er flere alternativer tilgjengelig for installasjon. Jeg har koblet til Community Server. Dette lar deg installere en versjon som er spesifikk for operativsystemet ditt. MongoDB tilbyr også en Enterprise Server og en cloud support installasjon. Siden hele bøkene kunne skrives om installering, innstilling og overvåkning av MongoDB, skal jeg holde fast hos Community Server.
Når du har lastet ned og installert MongoDB for ditt valgte operativsystem, må du starte databasen. I stedet for å gjenoppfinne hjulet, foreslår jeg at du besøker MongoDBs dokumentasjon om hvordan du installerer MongoDB Community Edition.
Jeg venter her mens du konfigurerer MongoDB. Når du er klar, kan vi fortsette å sette opp Mongoose for å koble til din nylig installerte MongoDB-database.
Mongoose er et JavaScript-rammeverk, og jeg skal bruke det i en Node.js-applikasjon. Hvis du allerede har Node.js installert, kan du gå videre til neste trinn. Hvis du ikke har Node.js installert, foreslår jeg at du begynner å besøke Node.js nedlastingsside og velge installasjonsprogrammet for operativsystemet ditt.
Med Node.js satt opp og klar til å gå, skal jeg lage en ny applikasjon og deretter installere Mongoose NPM Package.
Med en ledetekst som er satt til der du ønsker at programmet skal installeres, kan du kjøre følgende kommandoer:
mkdir mongoose_basics cd mongoose_basics npm init
For initialiseringen av programmet min, forlot jeg alt som standardverdiene. Nå skal jeg installere mongoose-pakken som følger:
npm installere mongoose - save
Med alle forutsetninger konfigurert, la oss koble til en MongoDB-database. Jeg har plassert følgende kode i en index.js-fil fordi jeg valgte det som utgangspunkt for programmet mitt:
var mongoose = krever ('mongoose'); mongoose.connect ( 'mongodb: // localhost / mongoose_basics');
Den første linjen med kode inkluderer Mongoose
bibliotek. Deretter åpner jeg en forbindelse til en database som jeg har ringt mongoose_basics
bruker koble
funksjon.
De koble
funksjonen aksepterer to andre valgfrie parametere. Den andre parameteren er et objekt av alternativer der du kan definere ting som brukernavn og passord, om nødvendig. Den tredje parameteren, som også kan være den andre parameteren hvis du ikke har noen alternativer, er tilbakeringingsfunksjonen etter å ha forsøkt å koble til. Tilbakeringingsfunksjonen kan brukes på to måter:
mongoose.connect (uri, alternativer, funksjon (feil) // Kontroller feil ved opprinnelig tilkobling. Det er ingen andre param til tilbakekallingen.); // eller bruke løfter mongoose.connect (uri, alternativer) .then (() => / ** klar til bruk. Løftet 'mongoose.connect ()' løser undefined. * /, Err => / ** håndter opprinnelig tilkoblingsfeil * /);
For å unngå en mulig introduksjon til JavaScript-løfter, vil jeg bruke den første måten. Nedenfor er en oppdatert index.js-fil:
var mongoose = krever ('mongoose'); mongoose.connect ('mongodb: // localhost / mongoose_basics', funksjon (err) hvis (err) kaste err; console.log ('Vellykket tilkoblet'););
Hvis det oppstår en feil ved tilkobling til databasen, blir unntaket kastet og all videre behandling stoppet. Når det ikke oppstår en feil, har jeg logget en suksessmelding til konsollen.
Mongoose er nå satt opp og koblet til en database som heter mongoose_basics
. Min MongoDB-tilkobling bruker ikke brukernavn, passord eller tilpasset port. Hvis du trenger å angi disse alternativene eller andre alternativer under tilkobling, foreslår jeg at du gjennomgår Mongoose-dokumentasjonen når du kobler til. Dokumentasjonen gir detaljerte forklaringer på de mange tilgjengelige alternativene, samt hvordan du oppretter flere tilkoblinger, tilkoblingssamling, kopier, osv.
Med en vellykket forbindelse, la oss gå videre for å definere et Mongoose-skjema.
Under introduksjonen viste jeg en bruker
objekt som inneholdt to egenskaper: fornavn
og etternavn
. I det følgende eksemplet har jeg oversatt dette dokumentet til et Mongoose-skjema:
var userSchema = mongoose.Schema (firstName: String, LastName: String);
Dette er et veldig grunnleggende skjema som bare inneholder to egenskaper uten attributter knyttet til det. La oss utvide på dette eksemplet ved å konvertere for- og etternavnseiendommene til å være barnobjekter av a Navn
eiendom. De Navn
eiendom vil omfatte både for- og etternavn. Jeg vil også legge til en opprettet
eiendom som er av typen Dato
.
var userSchema = mongoose.Schema (navn: firstName: String, LastName: String, opprettet: Dato);
Som du kan se, lar Mongoose meg lage meget fleksible skjemaer med mange forskjellige mulige kombinasjoner av hvordan jeg kan organisere dataene mine.
I dette neste eksempel skal jeg lage to nye skjemaer som vil demonstrere hvordan man lager et forhold til et annet skjema: forfatter
og bok
. De bok
skjema vil inneholde en referanse til forfatter
skjema.
var authorSchema = mongoose.Schema.Types.ObjectId, navn: firstName: String, lastName: String, biografi: String, twitter: String, facebook: String, linkedin: String, profilBillede: Buffer, opprettet: type: dato, standard: date.now);
Over er forfatter
skjema som utvides på konseptene av bruker
skjema som jeg opprettet i forrige eksempel. For å koble forfatteren og boka sammen, er den første egenskapen til forfatter
skjemaet er en _id
eiendom som er en Objekt
skjema type. _id
er den vanlige syntaksen for å skape en primærnøkkel i Mongoose og MongoDB. Så, som bruker
skjema, jeg har definert a Navn
eiendom som inneholder forfatterens for- og etternavn.
Utvide på bruker
skjema, den forfatter
inneholder flere andre string
skjema typer. Jeg har også lagt til en Buffer
skjema type som kan holde forfatterens profilbilde. Den endelige eiendommen har den opprettede datoen til forfatteren; Du kan imidlertid merke at den er opprettet litt annerledes fordi den har definert en standardverdi av "nå". Når en forfatter er vedvarende til databasen, vil denne egenskapen bli satt til gjeldende dato / klokkeslett.
For å fullføre skjemaeksemplene la vi opprette en bok
skjema som inneholder en referanse til forfatteren ved å bruke Objekt
skjema type:
var bookSchema = mongoose.Schema (_id: mongoose.Schema.Types.ObjectId, title: String, oppsummering: String, isbn: String, miniatyrbilde: Buffer, forfatter: type: mongoose.Schema.Types.ObjectId, ref: ' Forfatter ', rangeringer: [oppsummering: String, detalj: String, numberOfStars: Nummer, opprettet: type: Dato, standard: Date.now], opprettet: type: Dato, standard: Date.now );
De bok
skjemaet inneholder flere egenskaper av typen string
. Som nevnt ovenfor inneholder den en referanse til forfatter
skjema. For ytterligere å demonstrere de kraftige skjemadefinisjonene, bok
skjema inneholder også en Array
av rangeringer
. Hver vurdering består av a sammendrag
, detalj
, numberOfStars
, og opprettet
dato eiendom.
Mongoose gir deg fleksibiliteten til å lage skjemaer med referanser til andre skjemaer, eller som i eksempelet ovenfor med rangeringer
eiendom, det lar deg lage en Array
av barnegenskaper som kan være inneholdt i et beslektet skjema (som bok til forfatter) eller inline som i eksemplet ovenfor (med bok til en rangering Array
).
Siden forfatter
og bok
skjemaer viser Mongooses skjema fleksibilitet, jeg skal fortsette å bruke disse skjemaene og utlede en Forfatter
og Bok
modell fra dem.
var Forfatter = mongoose.model ('Author', authorSchema); var Book = mongoose.model ('Book', bookSchema);
En Mongoose-modell, når den er lagret, oppretter et dokument i MongoDB med egenskapene som definert av skjemaet det er avledet fra.
For å demonstrere å skape og lagre et objekt, i dette neste eksempel skal jeg lage flere objekter: an Forfatter
Modell og flere Bok
Modeller. Når de er opprettet, vil disse objektene fortsette å MongoDB ved hjelp av lagre
metode av modellen.
var jamieAuthor = ny Forfatter _id: new mongoose.Types.ObjectId (), navn: firstName: 'Jamie', etternavn: 'Munro', biografi: 'Jamie er forfatter av ASP.NET MVC 5 med Bootstrap og Knockout .js. ', twitter:' https://twitter.com/endyourif ', facebook:' https://www.facebook.com/End-Your-If-194251957252562/ '; jamieAuthor.save (funksjon (err) hvis (err) kaste err; console.log ('Forfatter vellykket.'); var mvcBook = ny bok _id: new mongoose.Types.ObjectId (), tittel: 'ASP. NET MVC 5 med Bootstrap og Knockout.js ', forfatter: jamieAuthor._id, rangeringer: [sammendrag:' Great read ']; mvcBook.save (funksjon (feil) hvis (feil) kaste err; console.log ('Bestill vellykket.');); Var knockoutBook = ny bok _id: new mongoose.Types.ObjectId (), tittel: 'Knockout.js: Building Dynamic Client-Side Web Applications', forfatter: jamieAuthor._id ; knockoutBook.save (funksjon (feil) hvis (feil) kaste err; console.log ('Bestill vellykket.';;);;
I eksemplet ovenfor har jeg sjamløst koblet en referanse til mine to siste bøker. Eksemplet starter ved å opprette og lagre en jamieObject
som er opprettet fra enForfatter
Modell. Inne i lagre
funksjon av jamieObject
, Hvis det oppstår en feil, vil programmet gi et unntak. Når lagringen er vellykket, inne i lagre
funksjon, blir de to bokobjektene opprettet og lagret. Ligner på jamieObject
, Hvis det oppstår en feil ved lagring, utføres en feil; ellers blir en suksessmelding sendt ut i konsollen.
For å opprette referansen til forfatteren, refererer bokobjektene både til forfatter
skjemaet er _id
primærnøkkel i forfatter
eiendom av bok
skjema.
Det er ganske vanlig for dataene som vil ende opp med å skape en modell som skal fylles ut av et skjema på en nettside. På grunn av dette er det en god idé å validere disse dataene før du lagrer modellen til MongoDB.
I dette neste eksempel har jeg oppdatert forrige forfatter-skjema for å legge til validering på følgende egenskaper: fornavn
, twitter
, facebook
, og linkedin
.
var authorSchema = mongoose.Schema (_id: mongoose.Schema.Types.ObjectId, navn: firstName: type: String, obligatorisk: true, lastName: String, biografi: String, twitter: type: String, validere : validator: funksjon (tekst) return text.indexOf ('https://twitter.com/') === 0;, melding: 'Twitter-håndtaket må starte med https://twitter.com/' , facebook: type: String, validere: validator: funksjon (tekst) return text.indexOf ('https://www.facebook.com/') === 0;, melding: 'Facebook må starte med https://www.facebook.com/ ', linkedin: type: String, validere: validator: funksjon (tekst) return text.indexOf (' https://www.linkedin.com/ ') === 0;, melding: 'LinkedIn må starte med https://www.linkedin.com/', profilPicture: Buffer, opprettet: type: Dato, standard: Date.now);
De fornavn
Eiendommen har blitt tilskrevet med nødvendig
eiendom. Nå når jeg ringer til lagre
funksjon, vil Mongoose returnere en feil med en melding som indikerer fornavn
eiendom er nødvendig. Jeg valgte ikke å lage etternavn
eiendom som kreves dersom Cher eller Madonna skulle være forfattere i databasen min.
De twitter
, facebook
, og linkedin
Egenskaper alle har veldig lignende tilpassede validatorer som er brukt på dem. De sikrer hverandre at verdiene starter med det respektive domenenavnetes sosiale nettverk. Disse feltene er ikke påkrevet, så validatoren vil bare bli brukt når data leveres for den aktuelle egenskapen.
En introduksjon til Mongoose ville ikke være komplett uten et eksempel på å søke etter en plate og oppdatering av en eller flere egenskaper på objektet.
Mongoose gir flere forskjellige funksjoner for å finne data for en bestemt modell. Funksjonene er finne
, Finn én
, og findById
.
De finne
og Finn én
Fungerer begge aksepterer et objekt som inngang som tillater komplekse søk, mens findById
aksepterer bare en enkelt verdi med tilbakeringingsfunksjon (et eksempel vil følge snart). I dette neste eksemplet skal jeg demonstrere hvordan man finner alle bøker som inneholder strengen "mvc" i tittelen sin.
Book.find (title: / mvc / i) .exec (funksjon (feil, bøker) hvis (feil) kaste err; console.log (bøker););
Inne i finne
funksjon, jeg søker etter saken ufølsom streng "mvc" på tittel
eiendom. Dette oppnås ved å bruke samme syntaks for å søke en streng med JavaScript.
Funnfunksjonsanropet blir også koblet til andre spørringsmetoder, for eksempel hvor
, og
, eller
, grense
, sortere
, noen
, etc.
La oss utvide på forrige eksempel for å begrense resultatene til de fem første bøkene og sortere på den opprinnelige datoen som synkende. Dette kommer tilbake til de fem siste bøkene som inneholder "mvc" i tittelen.
Book.find (title: / mvc / i). Sort ('- opprettet') .limit (5) .exec (funksjon (feil, bøker) hvis (feil) kaste err; console.log );
Etter påføring av finne
funksjonen, er rekkefølgen til de andre funksjonene ikke viktig fordi alle de kjedede funksjonene er samlet sammen i en enkelt spørring og ikke henrettet til exec
funksjon kalles.
Som jeg tidligere nevnte, findById
utføres litt annerledes. Den kjøres umiddelbart og aksepterer en tilbakeringingsfunksjon, i stedet for å tillate en kjede av funksjoner. I dette neste eksempel spør jeg en bestemt forfatter av deres _id
.
Forfatter.findById ('59b31406beefa1082819e72f', funksjon (feil, forfatter) hvis (feil) kaste err; console.log (forfatter););
De _id
i ditt tilfelle kan være litt annerledes. Jeg kopierte dette _id
fra en tidligere console.log
når du finner en liste over bøker med "mvc" i tittelen sin.
Når et objekt er returnert, kan du endre noen av egenskapene for å oppdatere det. Når du har gjort de nødvendige endringene, ringer du til lagre
metode, akkurat som når du lager objektet. I dette neste eksempel vil jeg utvide findbyId
eksempel og oppdatere linkedin
eiendom på forfatteren.
Forfatter.findById ('59b31406beefa1082819e72f', funksjon (feil, forfatter) hvis (feil) kaste err; author.linkedin = 'https://www.linkedin.com/in/jamie-munro-8064ba1a/'; author.save (funksjon (feil) hvis (feil) kaste err; console.log ('Forfatter oppdatert vellykket');););
Etter at forfatteren er hentet, linkedin
eiendommen er satt og lagre
funksjon kalles. Mongoose er i stand til å oppdage at linkedin
Eiendommen ble endret, og den vil sende en oppdateringserklæring til MongoDB på bare de egenskapene som er endret. Hvis det oppstod en feil under lagring, vil et unntak kastes og stoppe programmet. Når det lykkes, logges en suksessmelding til konsollen.
Mongoose tilbyr også to tilleggsfunksjoner som gjør det mulig å finne et objekt og lagre det i ett enkelt trinn med de passende navngitte funksjonene: findByIdAndUpdate
og findOneAndUpdate
. La oss oppdatere forrige eksempel for å bruke findByIdAndUpdate
.
Forfatter.findByIdAndUpdate ('59b31406beefa1082819e72f', linkedin: 'https://www.linkedin.com/in/jamie-munro-8064ba1a/', funksjon (feil, forfatter) hvis (feil) kaste err; console.log (forfatter););
I forrige eksempel leveres egenskapene som skal oppdateres som et objekt til den andre parameteren til findByIdAndUpdate
funksjon. Tilbakeringingsfunksjonen er nå den tredje parameteren. Når oppdateringen er vellykket, vil forfatter
objekt returnert inneholder den oppdaterte informasjonen. Dette er logget på konsollen for å se egenskapene til den oppdaterte forfatteren.
I hele denne artikkelen ga jeg ut små kodestykker som identifiserte en veldig spesifikk handling, for eksempel å lage et skjema, lage en modell osv. La oss sette sammen alt i et komplett eksempel.
For det første har jeg opprettet to ekstra filer: author.js
og book.js
. Disse filene inneholder sine respektive skjemadefinisjoner og modellopprettelsen. Den endelige linjen med kode gjør modellen tilgjengelig for bruk i index.js
fil.
La oss starte med author.js-filen:
var mongoose = krever ('mongoose'); var authorSchema = mongoose.Schema (_id: mongoose.Schema.Types.ObjectId, navn: firstName: type: String, obligatorisk: true, lastName: String, biografi: String, twitter: type: String, validere : validator: funksjon (tekst) return text.indexOf ('https://twitter.com/') === 0;, melding: 'Twitter-håndtaket må starte med https://twitter.com/' , facebook: type: String, validere: validator: funksjon (tekst) return text.indexOf ('https://www.facebook.com/') === 0;, melding: 'Facebook må starte med https://www.facebook.com/ ', linkedin: type: String, validere: validator: funksjon (tekst) return text.indexOf (' https://www.linkedin.com/ ') === 0;, melding: 'LinkedIn må starte med https://www.linkedin.com/', profilPicture: Buffer, opprettet: type: Dato, standard: Date.now); var Forfatter = mongoose.model ('Author', authorSchema); module.exports = Forfatter;
Neste kommer book.js
fil:
var mongoose = krever ('mongoose'); var bookSchema = mongoose.Schema (_id: mongoose.Schema.Types.ObjectId, title: String, oppsummering: String, isbn: String, miniatyrbilde: Buffer, forfatter: type: mongoose.Schema.Types.ObjectId, ref: ' Forfatter ', rangeringer: [oppsummering: String, detalj: String, numberOfStars: Nummer, opprettet: type: Dato, standard: Date.now], opprettet: type: Dato, standard: Date.now ); var Book = mongoose.model ('Book', bookSchema); module.exports = Book;
Og til slutt, den oppdaterte index.js
fil:
var mongoose = krever ('mongoose'); var Forfatter = krever ('./ forfatter'); var Book = krever ('./ bok'); mongoose.connect ('mongodb: // localhost / mongoose_basics', funksjon (err) hvis (err) kaste err; console.log ('Vellykket tilkoblet'); var jamieAuthor = ny Forfatter (_id: new mongoose.Types. ObjectId (), navn: firstName: 'Jamie', etternavn: 'Munro', biografi: 'Jamie er forfatter av ASP.NET MVC 5 med Bootstrap og Knockout.js.', Twitter: 'https: // twitter .com / endyourif ', facebook:' https://www.facebook.com/End-Your-If-194251957252562/ '); jamieAuthor.save (funksjon (err) hvis (feil) kaste err; console.log ('Forfatter vellykket lagret.'); Var mvcBook = Ny bok (_id: new mongoose.Types.ObjectId (), tittel: 'ASP.NET MVC 5 med Bootstrap og Knockout.js', forfatter: jamieAuthor._id, rangeringer : [summary: 'Great read']); mvcBook.save (funksjon (feil) hvis (feil) kaste err; console.log ('Bestill vellykket.';;); var knockoutBook = ny bok (_id: new mongoose.Types.ObjectId (), tittel: 'Knockout.js: Building Dynamic Client-Side Web Applications', forfatter: jamieAuthor._id); knockoutBook.save (funct ion (err) hvis (feil) kaste feil; console.log ('Bestill vellykket.'); ); ); );
I eksempelet ovenfor er alle de mongoose handlingene inneholdt i koble
funksjon. De forfatter
og bok
filer er inkludert i krever
funksjon etter å ha medtatt Mongoose
bibliotek.
Med MongoDB kjører, kan du nå kjøre hele programmet Node.js med følgende kommando:
node index.js
Etter at jeg lagret noen data i databasen, oppdaterte jeg index.js
filen med funnfunksjonene som følger:
var mongoose = krever ('mongoose'); var Forfatter = krever ('./ forfatter'); var Book = krever ('./ bok'); mongoose.connect ('mongodb: // localhost / mongoose_basics', funksjon (err) hvis (err) kaste err; console.log ('Vellykket tilkoblet'); Book.find (title: / mvc / i). sortere ('opprettet') .limit (5) .exec (funksjon (feil, bøker) hvis (feil) kaste err; console.log (bøker);); Author.findById ('59b31406beefa1082819e72f', funksjon , forfatter) hvis (err) kaste err; author.linkedin = 'https://www.linkedin.com/in/jamie-munro-8064ba1a/'; author.save (funksjon (feil) hvis (feil) kaste err; console.log ('Forfatter oppdatert vellykket'););); Author.findByIdAndUpdate ('59b31406beefa1082819e72f', linkedin: 'https://www.linkedin.com/in/jamie-munro-8064ba1a/' , funksjon (feil, forfatter) hvis (feil) kaste err; console.log (author);););
Igjen kan du kjøre programmet med kommandoen: node index.js
.
Etter å ha lest denne artikkelen, bør du kunne lage ekstremt fleksible Mongoose-skjemaer og -modeller, bruke enkel eller kompleks validering, opprette og oppdatere dokumenter, og til slutt søke etter dokumentene som ble opprettet.
Forhåpentligvis føler du deg komfortabel med å bruke Mongoose. Hvis du ønsker å lære mer, vil jeg foreslå å gjennomgå Mongoose Guides som dykker inn i mer avanserte emner som befolkning, mellomvare, løfter osv..
Glad jakt (dårlig Mongoose dyr referanse)!