Intro til Enterprise Cloud Storage, del 2: Hvordan få tilgang en Cloudant Database

I forrige tutorial, jeg snakket om hvordan du oppretter en konto med Cloudant og derfra opprette en database og nytt dokument. La oss nå se hvordan du får tilgang til databasen programmatisk. For å gjøre det, trenger du en CouchDB driver for din bestemt språk. I dette eksempelet vil jeg bruke node.js og nano driver. Men begrepene vil bære over til noe annet språk.

Husk at med Cloudant dokumentene er JSON stedene. Fordi node.js bruker Javascript for sitt språk, kan disse dokumentene enkelt kopieres mellom Cloudant og din node.js program. La oss først hente dokumentet opprettet siste gang. For å gjøre dette, må du ha din Cloudant påloggingsinformasjonen din databasenavn og felt _id dokumentets. Den _id for dokumentet i min database er strengen 'd795ad9029793255261aba9fe045ac4f'. (Yours vil være annerledes, du kan se det når du ser på dokumentet i Cloudant web konsollen sin feltnavn er _id..)

Her er en hel node.js app som henter dokumentet og skriver det ut . Du må bytte ut påloggingsinformasjon, databasenavn og _id med din egen. Merk også at brukernavn og passord er det samme som du bruker for å logge deg inn i Cloudant nettkonsollen

 Var nano = krever ('nano') ({url.: 'https://username:[email protected]'});nano.use('linux_com_demo').get('d795ad9029793255261aba9fe045ac4f', funksjon (err, doc) {console.log (doc);}); 

(Hvis du får en feilmelding, "Kan ikke finne modulen 'nano'», så sørg for at du har installert nano med NPM, og at det er tilgjengelig i node moduler bane)

Når du kjører dette, bør du se hele dokumentet vises i konsollen.

 {_id: 'd795ad9029793255261aba9fe045ac4f', _rev: '3-7b7ebadc7043829cb0499a6ed70a4b9a', FIRST_NAME : 'George', last_name: «Washington», levde: {født: 1732, døde: 1799}, president: 1} 

Dette er ganske grei; kallet til nano.use tilgang til databasen, returnerer et objekt som lar deg ringe få hente dokumentet.

Du vil sannsynligvis ønske å ta med noen feilbehandling. Hvis dokumentet ikke blir funnet, vil ingen unntak bli kastet; i stedet, vil dokumentet være "udefinert" verdi. Men du vil også få tilbake et komplett sett med feilinformasjon i første parameter for tilbakeringingsfunksjonen. Jeg skal endre _id til noe ikke-eksisterende, og deretter skrive ut feilmeldingen jeg får tilbake. For å gjøre dette, vil jeg endre tilbakeringingsfunksjonen som følger:

 if (err) {console.log (err); return;} console.log (doc); 

På grunn av plassbegrensninger, jeg kommer ikke til å vise hele feil objektet her. Men err er et objekt med flere medlemmer. Her er en del av hva jeg fikk tilbake:

 {name: "Feil", status_code: 404, 'status-koden ": 404, error:' not_found ', grunn:' mangler '} 

Disse medlemmer gi en god beskrivelse av hva feilen oppstod.

Laste opp et dokument

Neste, la oss se på å laste opp et nytt dokument. Det er der ting blir vanskelig, fordi CouchDB (og dermed Cloudant) bruker revisjonsnumre på dokumenter, som jeg skal forklare kort tid.

Først er enkelt å laste opp et dokument. Her er et komplett program som er atskilt fra forrige:

 Var nano = require ('nano') ({url: https: //brukernavn:. Denne e-postadressen er beskyttet mot programmer som samler Javascript Script for å kunne se adressen '}); Var mydoc = {FIRST_NAME: «John», last_name:' Adams ', levde: {født: 1735, døde: 1 826}, president: 2}; nano.use (' linux_com_demo '). Sett (mydoc, funksjon (err, doc) {if (err) {console.log (err); avkastning;} console.log (doc);}); 

Når jeg kjører denne, her er svaret jeg se:

 {ok: true, id: 'b6fa8c64f64dbfdd40631b5ad7b922b2', rev: '1-e03edf9c7815a64cc1df4063d9a2fd6b'} 

id-feltet i dette svaret er den _id Cloudant tildelt dokumentet, siden vi ikke gir ett i det opprinnelige objektet. (Merk at i svaret, er feltet id uten en understrek, men i det lagrede dokumentet, er det _id med en understrekning.) Vi kunne ha gitt vår egen _id hvis vi ville, i stedet for at Cloudant opprette en. I en reell søknad, vil du ønsker å ta både id og rev i dette svaret, og legge dem til i dokumentet som _id og _rev, henholdsvis, hvis du har tenkt å fortsette å bruke dem i programmet ditt.

Nå la oss hoppe over til web-konsollen og finne dokumentet. Logg inn, og klikk på databasenavn. Du vil se dagens liste av dokumenter, inkludert den ble opprettet i forrige tutorial, og den nye, som vist i følgende bilde.


Men dette synet viser bare kort informasjon om hvert dokument. Flyte musen over et dokument, og du vil se en liten "Edit doc" -knappen vises. Klikk på den og du vil se den fulle doc, som så:



Dokument Revisjoner

Nå la oss snakke om det feltet som heter _rev. Dette er revisjonsnummeret av dokumentet. Hvis du prøver å skrive ut et dokument som _id feltet allerede finnes i databasen, må du også omfatte gjeldende revisjonsnummeret. Ellers vil dokumentet bli avvist og du vil få tilbake en feil. Feilmeldingen vil være statuskode 409 og meldingen "Dokument oppdatering konflikt." Ideen er ganske enkel; når du arbeider på et eksisterende dokument, bare holde _rev feltet rundt og bruke den til å laste opp, og du blir fin. Når du lagrer dokumentet, vil du få tilbake en ny _rev felt til bruk for den påfølgende spare.

Men dette har forårsaket noen hodepine for mennesker. Hvis du har flere personer som arbeider på et dokument, og du ønsker noen å være i stand til å overstyre eventuelle andre endringer av andre mennesker som kan ha funnet sted i mellom å hente og lagre dokumentet, så finnes det en enkel løsning (om enn ikke veldig effektivt): Les dokumentet på nytt som et midlertidig dokument; grip feltet _rev det midlertidige dokumentet, kopiere den i selve dokumentet, og deretter lagre. Men det er fortsatt potensial for et løp tilstand i tilfelle en annen bruker lagret dokumentet i midten av denne prosessen. Deretter må du håndtere feil og prøv igjen. (Men dette er noe slurvete engineering;. Prøve å holde oversikt over dine _rev felt så mye som mulig)

Konklusjon

Dette har bare vært en kort titt på hvordan du kan skrive kode for å få tilgang Cloudant. Det er ganske lett å gjøre det. Det er flere temaer du kan utforske ved å lese dokumentasjonen Cloudant, som for eksempel hvordan du oppretter synspunkter, gjør fulltekstsøk og mer. Vi kan dekke disse i fremtidige tutorials.

Også før jeg går, vil jeg nevne at de kodende aspektene vi har gjort i dagens tutorial er ikke unikt for Cloudant. Du kan faktisk bruke disse teknikkene for noen CouchDB database, inkludert en installert lokalt. Det betyr at du kan teste lokalt hvis du vil. Men søke og indeks funksjoner i Cloudant vil trolig ikke være til stede i din lokale installasjon. Men de generelle funksjoner (opprette, lese, oppdatere, slette og visninger) vil bli. Og når du begynner å bruke Cloudant, vil du få de sky replikering funksjoner uten å måtte administrere dine egne servere. For små og mellomstore bedrifter med begrensede ressurser, kan dette bety å gi deg tid til å fokusere på å bygge produktet, snarere enn å opprettholde databaseservere. Anmeldelser