Freigeben über


Schnellstart: Verwenden von Azure Cosmos DB for NoSQL mit dem Azure SDK für Node.js

In dieser Schnellstartanleitung stellen Sie eine einfache Azure Cosmos DB for Table-Anwendung mithilfe des Azure SDK für Node.js bereit. Azure Cosmos DB for Table ist ein schemaloser Datenspeicher, der es Anwendungen ermöglicht, strukturierte NoSQL-Daten in der Cloud zu speichern. Sie erfahren, wie Sie Tabellen, Zeilen und grundlegende Aufgaben innerhalb Ihrer Azure Cosmos DB-Ressource mithilfe des Azure SDK for Node.js erstellen.

API-Referenzdokumentation | Quellcode der Bibliothek | Paket (npm) | Azure Developer CLI

Voraussetzungen

  • Azure Developer CLI
  • Docker Desktop
  • Node.js 22 oder höher

Sollten Sie kein Azure-Konto haben, erstellen Sie zunächst ein kostenloses Konto.

Initialisieren des Projekts

Verwenden Sie die Azure Developer CLI (azd), um ein Azure Cosmos DB for Table-Konto zu erstellen und eine containerisierte Beispielanwendung bereitzustellen. Die Beispielanwendung verwendet die Clientbibliothek zum Verwalten, Erstellen, Lesen und Abfragen von Beispieldaten.

  1. Öffnen Sie ein Terminal in einem leeren Verzeichnis.

  2. Wenn Sie noch nicht authentifiziert sind, authentifizieren Sie sich mithilfe von azd auth login bei der Azure Developer CLI. Führen Sie die vom Tool angegebenen Schritte aus, um sich mit Ihren bevorzugten Azure-Anmeldeinformationen bei der CLI zu authentifizieren.

    azd auth login
    
  3. Verwenden Sie azd init, um das Projekt zu initialisieren.

    azd init --template cosmos-db-nosql-nodejs-quickstart
    
  4. Konfigurieren Sie während der Initialisierung einen eindeutigen Umgebungsnamen.

  5. Stellen Sie das Azure Cosmos DB-Konto mit azd up bereit. Die Bicep-Vorlagen stellen auch eine Beispielwebanwendung bereit.

    azd up
    
  6. Wählen Sie während des Bereitstellungsprozesses Ihr Abonnement, den gewünschten Standort und die Zielressourcengruppe aus. Warten Sie auf den Abschluss des Bereitstellungsvorgangs. Dieser Prozess kann ca. fünf Minuten dauern.

  7. Sobald die Bereitstellung Ihrer Azure-Ressourcen abgeschlossen ist, enthält die Ausgabe eine URL zur ausgeführten Webanwendung.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Verwenden Sie die URL in der Konsole, um im Browser zu Ihrer Webanwendung zu navigieren. Sehen Sie sich die Ausgabe der ausgeführten App an.

Screenshot der ausgeführten Web-App.

Screenshot der ausgeführten Web-App.

Installieren der Clientbibliothek

Die Clientbibliothek ist über den Node-Paket-Manager als @azure/cosmos-Paket verfügbar.

  1. Öffnen Sie ein Terminal, und navigieren Sie zum /src-Ordner.

    cd ./src
    
  2. Installieren Sie das @azure/cosmos-Paket mithilfe von npm install, falls es noch nicht installiert ist.

    npm install --save @azure/cosmos
    
  3. Installieren Sie außerdem das @azure/identity-Paket (sofern noch nicht installiert).

    npm install --save @azure/identity
    
  4. Öffnen Sie die Datei src/package.json, und überprüfen Sie sie, um zu bestätigen, dass die Einträge azure-cosmos und azure-identity vorhanden sind.

Objektmodell

name Beschreibung
CosmosClient Diese Klasse ist die primäre Clientklasse und wird verwendet, um kontoweite Metadaten oder Datenbanken zu verwalten.
Database Diese Klasse stellt eine Datenbank innerhalb des Kontos dar.
Container Diese Klasse wird in erster Linie verwendet, um Lese-, Update- und Löschvorgänge für den Container oder die im Container gespeicherten Elemente auszuführen.
PartitionKey Diese Klasse stellt einen logischen Partitionsschlüssel dar. Sie ist für viele allgemeine Vorgänge und Abfragen erforderlich.
SqlQuerySpec Diese Schnittstelle stellt eine SQL-Abfrage und alle Abfrageparameter dar.

Codebeispiele

Der Beispielcode in der Vorlage verwendet eine Datenbank mit dem Namen cosmicworks und einen Container mit dem Namen products. Der products-Container enthält Details wie Name, Kategorie, Menge, eindeutiger Bezeichner und ein Verkaufsflag für jedes Produkt. Der Container verwendet die /category-Eigenschaft als logischen Partitionsschlüssel.

Authentifizieren des Clients

In diesem Beispiel wird eine neue Instanz des CosmosClient-Typs erstellt, und die Authentifizierung erfolgt mit einer DefaultAzureCredential-Instanz.

const credential = new DefaultAzureCredential();

const client = new CosmosClient({
    '<azure-cosmos-db-nosql-account-endpoint>',
    aadCredentials: credential
});
const credential: TokenCredential = new DefaultAzureCredential();

const client = new CosmosClient({
    '<azure-cosmos-db-nosql-account-endpoint>',
    aadCredentials: credential
});

Datenbank abrufen

Verwenden Sie client.database, um die vorhandene Datenbank mit dem Namen cosmicworks abzurufen.

const database = client.database('cosmicworks');
const database: Database = client.database('cosmicworks');

Container abrufen

Rufen Sie den vorhandenen products-Container mithilfe von database.container ab.

const container = database.container('products');
const container: Container = database.container('products');

Erstellen eines Elements

Erstellen Sie ein neues Objekt mit allen Membern, die Sie in JSON serialisieren möchten. In diesem Beispiel weist der Typ einen eindeutigen Bezeichner und Felder für Kategorie, Name, Menge, Preis und den Verkauf auf. Erstellen Sie mithilfe von container.items.upsert ein Element im Container. Mit dieser Methode wird ein Upsertvorgang für das Element ausgeführt, wodurch es effektiv ersetzt wird (sofern schon vorhanden).

const item = {
    'id': 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
    'category': 'gear-surf-surfboards',
    'name': 'Yamba Surfboard',
    'quantity': 12,
    'price': 850.00,
    'clearance': false
};

let response = await container.items.upsert(item);
const item: Product = {
    'id': 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
    'category': 'gear-surf-surfboards',
    'name': 'Yamba Surfboard',
    'quantity': 12,
    'price': 850.00,
    'clearance': false
};

let response: ItemResponse<Product> = await container.items.upsert<Product>(item);

Lesen eines Elements

Führen Sie einen Punktlesevorgang durch, indem Sie sowohl den eindeutigen Bezeichner (id) als auch die Partitionsschlüsselfelder verwenden. Verwenden Sie container.item zum Abrufen eines Zeigers auf ein Element, und rufen Sie mit item.read effizient das jeweilige Element ab.

const id = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb';
const partitionKey = 'gear-surf-surfboards';

let response = await container.item(id, partitionKey).read();
let read_item = response.resource;
const id = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb';
const partitionKey = 'gear-surf-surfboards';

let response: ItemResponse<Product> = await container.item(id, partitionKey).read<Product>();
let read_item: Product = response.resource!;

Abfrageelemente

Führen Sie mithilfe von container.items.query eine Abfrage für mehrere Elemente in einem Container durch. Suchen Sie alle Elemente in einer angegebenen Kategorie mithilfe dieser parametrisierten Abfrage:

SELECT * FROM products p WHERE p.category = @category

Fetchen Sie mithilfe von query.fetchAll alle Ergebnisse dieser Abfrage. Durchlaufen Sie die Ergebnisse der Abfrage.

const querySpec = {
    query: 'SELECT * FROM products p WHERE p.category = @category',
    parameters: [
        {
            name: '@category',
            value: 'gear-surf-surfboards'
        }
    ]
};

let response = await container.items.query(querySpec).fetchAll();
for (let item of response.resources) {
    // Do something
}
const querySpec: SqlQuerySpec = {
    query: 'SELECT * FROM products p WHERE p.category = @category',
    parameters: [
        {
            name: '@category',
            value: 'gear-surf-surfboards'
        }
    ]
};

let response: FeedResponse<Product> = await container.items.query<Product>(querySpec).fetchAll();
for (let item of response.resources) {
    // Do something
}

Bereinigen von Ressourcen

Wenn Sie die Beispielanwendung oder Ressourcen nicht mehr benötigen, entfernen Sie die entsprechende Bereitstellung und alle Ressourcen.

azd down