====== 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ń. - Ile dokumentów znajduje się w bazie? Jak to sprawdzić? Jakie są ich identyfikatory? - 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ń. - Usuń dokument o wybranym identyfikatorze. - Sprawdź czy dokument został usunięty. ===== Widoki ===== ==== Ćwiczenie 4 ==== - Zbuduj widok, tak aby udostępniał informacje o wpisach posortowane ze względu na datę. - Korzystając z w/w widoku znajdź wpisy z aktualnego miesiąca. Podpowiedź: użyj ''startkey'' oraz ''endkey''. - 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 - Futon/Fauxton: http://awing.kis.agh.edu.pl:5984/_utils , albo - 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)})