Podręcznik

Bazy danych

Obsługa MongoDB za pomocą Node.js

Sterownik

Do obsługi systemu MongoDB za pomocą środowiska Node.js służy pakiet mongodb (nazywany sterownikiem, ang. driver), który można zainstalować za pomocą npm:

> npm install mongodb

W kodzie JavaScript należy zaimportować klasę MongoClient z tego pakietu:

const { MongoClient } = require("mongodb");

Nawiązanie połączenia

Aby nawiązać połączenie, należy sformułować tzw. identyfikator połączenia (ang. connection URI albo connection string), czyli zmienną tekstową, zawierającą informacje o adresie serwera, numerze portu i innych parametrach połączenia – na przykład:

const uri = "mongodb://localhost:27017";

...a następnie za jej pomocą utworzyć obiekt klasy MongoClient:

const client = new MongoClient(uri);

Asynchroniczne wykorzystanie połączenia

Pakiet mongodb wykorzystuje promises do realizacji asynchronicznej komunikacji z bazą danych. Dzięki temu, można tworzyć czytelny kod programu z użyciem słów async, await, try, catch itp. Szkielet fragmentu programu, realizującego komunikację z bazą MongoDB, może wyglądać następująco (p. dokumentacja):

async function run() {
  try {
  
    // ... tu należy realizować komunikację z bazą danych
    // za pomocą obiektu client, używając "await"
  
  } finally {
    await client.close();  // zakończenie połączenia
  }
}

run().catch(console.log)  // wypisanie ewentualnych błędów

Komunikacja z bazą danych

Do komunikacji z bazą MongoDB można wykorzystać obiekt MongoClient podobnie, jak obsługuje się taką bazę za pomocą programu MongoDB Shell (omówionego w poprzednim podrozdziale). Na przykład, poniższy fragment kodu służy do tego, aby wyszukać w kolekcji bands bazy danych music dokument, w którym własność name ma wartość Queen:

var bands = client.db("music").collection("bands");
var data = await bands.findOne({name: "Queen"});
console.log(data)

Listę podstawowych metod komunikacji z bazą danych MongoDB można znaleźć w dokumentacji:

Node.js Driver – Quick Reference


Pełny przykład

Poniższy przykład stanowi zebranie fragmentów kodu, omówionych wyżej.

const { MongoClient } = require("mongodb");

const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);

async function run() {
  try {
    var bands = client.db("music").collection("bands");
    var data = await bands.findOne({name: "Queen"});
    console.log(data)
    
  } finally {
    await client.close();
  }
}

run().catch(console.log)

Więcej informacji: