Spis treści

Laboratorium, CouchDB 1

Baza danych CouchDB jest dostępna w trakcie trwania ćwiczeń pod adresem: http://awing.kis.agh.edu.pl:5984 Uwaga: baza danych dostępna tylko po uwierzytelnieniu. Login i hasło na zajęciach.

Do wykonania poniższych ćwiczeń wykorzystaj dowolną znaną Ci technologie komunikacji z wykorzystaniem HTTP: curl, telnet, netcat, PHP, Java…

cURL można pobrać ze strony: http://curl.haxx.se/download.html , najlepiej tą wersję: https://curl.se/windows/dl-7.80.0/curl-7.80.0-win64-mingw.zip - proszę otworzyć archiwum zip, wewnątrz w katalogu bin znajduje się plik curl.exe - proszę go rozpakować do katalogu w którym domyślnie pracuje powłoka cmd.

Jeżeli do uruchamiania cURL używana jest powłoka CMD w systemie Windows (cmd.exe) należy użyć innych ograniczników łańcuchów znaków dla wyrażeń JSON, niż te podane na wykładzie. Przykładowo, zamiast:

curl ... -d '{"klucz":"wartosc"}'

należy zastosować:

curl ... -d "{\"klucz\":\"wartosc\"}"

Dokumenty

Ćwiczenie 0: Baza danych

Utwórz bazę danych o nazwie skłądającej się z Twojego nazwiska i pierwszej litery imienia.

Sprawdź, czy baza danych została utworzona.

Ćwiczenie 1: Dodawanie

Do zrealizowania poniższego ćwiczenia użyj Futon/Fauxton: http://awing.kis.agh.edu.pl:5984/_utils lub CURL i linii poleceń.

Do Twojej bazy danych dodaj przynajmniej trzy dokumenty. Każdy z nich reprezentuje „wpis w kalendarzu”. Wpis posiada datę, treść, oraz wartość liczbową określającą ważność: 0 - najważniejsze, 1 - mniej ważne itd.

Ćwiczenie 2: Przeglądanie

Do zrealizowania poniższego ćwiczenia użyj przeglądarki WWW, albo CURL i linii poleceń.

  1. Ile dokumentów znajduje się w bazie? Jak to sprawdzić? Jakie są ich identyfikatory?
  2. Wyświetl zawartość dokumentu o wybranym identyfikatorze.

Ćwiczenie 3: Usuwanie

Do zrealizowania poniższego ćwiczenia użyj Futon/Fauxton: http://awing.kis.agh.edu.pl:5984/_utils lub CURL i linii poleceń.

  1. Usuń dokument o wybranym identyfikatorze.
  2. Sprawdź czy dokument został usunięty.

Widoki

Ćwiczenie 4

  1. Zbuduj widok, tak aby udostępniał informacje o wpisach posortowane ze względu na datę.
    1. Korzystając z w/w widoku znajdź wpisy z aktualnego miesiąca. Podpowiedź: użyj startkey oraz endkey.
  2. Zbuduj widok, który zliczy ilość ważnych wpisów (ważność=0) Uwaga: Jeżeli potrzeba dodaj nowe dokumenty do bazy danych, tak aby ilość zliczonych dokumentów była większa od 2.

Do zaprogramowania widoków użyj

  1. dowolnego edytora tekstu i curl.

Jeżeli korzystasz z CURL i zapisałeś widok w postaci Design Document (JSON) w pliku przyklad.json:

{
  "language": "javascript",
  "views":
  {
    "widok": {
      "map": "
               function(doc) { 
                 emit('klucz', 'wartosc') 
               }
             "
    }
  }
}

możesz umieścić go jako widok stały w bazie danych moja_baza_danych:

curl -X PUT http://awing.kis.agh.edu.pl:5984/moja_baza_danych/_design/przyklad -H "Content-Type: application/json" -d @przyklad.json

Do w/w widoku możesz się odwołać za pomocą:

curl -X GET http://awing.kis.agh.edu.pl:5984/moja_baza_danych/_design/przyklad/_view/widok

Ćwiczenie 5 (dla zainteresowanych)

Załóżmy, że w treści wpisów może wystąpić „hashtag”, czyli łańcuch znaków poprzedzony znakiem „#”. Żeby móc przeszukiwać wpisy po w/w hashtagach zbuduj widok, który zwróci informacje o hastagach i w jakich wpisach występują, razem z treścią takiego wpisu.

Do zaprogramowania widoku możesz rozbudować poniższy kod. Możesz go również przetestować w konsoli narzędzi deweloperskich przeglądarki.

const tresc = 'Czas na #wagary?\nA może jednak #szkola?';
const regex = /#[a-zA-Z0-9]+/g;
const found = tresc.match(regex);
 
found.map(function (x) {console.log(x)})