MongoDB i mgo – czyli kilka słów o bazie danych dla języka Go

Podczas projektowania aplikacji internetowych, ważny jest dobór narzędzi – powinny być dostosowane do potrzeb. Nie ma sensu wprowadzać do projektu niczego na wyrost, czegoś co ma lepsze zastosowanie w innego typu projektach. Wyjątkiem od tej reguły są aplikacje tworzone dla zabicia rutyny lub szkoleniowe. MongoDB jest właśnie takim narzędziem. Gdyby nie konkurs Daj Się Poznać, w którym obecnie biorę udział, pewnie jeszcze długo nie znalazł bym czasu by przetestować go w praktyce.

Instalacja, uruchomienie MongoDB

Zainstalowanie i uruchomienie MongoDB jest bardzo proste. Przez wszystkie kroki instalacji prowadzi nas przejrzysty tutorial. Po zakończonej instalacji (w zależności od OS) wpisujemy komendę do uruchomienia usługi mongod. Jeżeli wszystko pójdzie gładko, naszym oczom powinien ukazać się komunikat podobny do tego: 2017-03-09T18:34:05.500+0100 I NETWORK [thread1] waiting for connections on port 27017.

Nasza baza jest uruchomiona i czeka na połączenie z nią. Do testu wykorzystamy drugą konsolę. Komenda mongo otworzy na shella bazy danych, natomiast sama baza zakomunikuje o połączeniu do niej: 2017-03-09T18:37:42.001+0100 I NETWORK [thread1] connection accepted from 127.0.0.1:52151 #1 (1 connection now open)

mgo – połączenie

W łączeniu się z bazą danych oraz w wykonywaniu operacji na niej pomoże mi biblioteka mgo w wersji 2. Z zainstalowaniem pakietu przez komendę go get gopkg.in/mgo.v2 miałem lekkie perturbacje, dlatego by nie tracić zbytnio czasu na rozwiązywaniem tego problemu, pociągnąłem wersję bezpośrednio z repozytorium na githubie.

Wyzwaniem była reorganizacja kodu. Metoda do połączenia z bazą trafiła póki co do pliku server.go.

Nie ma tutaj żadnych haczyków, korzystamy z biblioteki mgo, by stworzyć sesję z naszą lokalną bazą danych. W między czasie została dopisana metoda do tworzenia produktu (o tym będzie w osobnym wpisie), więc test w konsoli zakończył się powodzeniem:

$ curl -XPOST -H 'Content-Type: application/json' -d '{"name": "Szynka z 9 marca"}' http://localhost:8001/product

Wynik:

{"id":"58c19cc71c4e63572e45e3f4","name":"Szynka z 9 marca"}

I jeszcze z basha dla komenty db.products.find():

{ "_id" : ObjectId("58c19cc71c4e63572e45e3f4"), "name" : "Szynka z 9 marca" }

 

Dawid Ryłko

Lubię dobre filmy, gry oraz kawę. W pracy front-end, po godzinach wszystko inne.

 
Współpraca:
Polski Front-End