Opgeslagen procedures ontwerpen

Voltooid

Transacties worden gedefinieerd als JavaScript-functies. De functie wordt vervolgens uitgevoerd wanneer de opgeslagen procedure wordt aangeroepen.

function name() {
}

Binnen de functie haalt de getContext() methode een contextobject op, dat kan worden gebruikt om meerdere acties uit te voeren, waaronder:

  • Het HTTP-antwoordobject openen

  • Toegang tot de bijbehorende Azure Cosmos DB for NoSQL-container

Met behulp van het contextobject kunt u de getResponse() methode aanroepen om toegang te krijgen tot het HTTP-antwoordobject om acties uit te voeren, zoals het retourneren van een HTTP OK (200) en het instellen van de hoofdtekst van het antwoord op een statische tekenreeks.

function greet() {
    var context = getContext();
    var response = context.getResponse();
    response.setBody("Hello, Learn!");
}

Nogmaals, met behulp van het contextobject, kunt u de getCollection() methode aanroepen voor toegang tot de container met behulp van de JavaScript-query-API.

function createProduct(item) {
    var context = getContext();
    var container = context.getCollection(); 
}

Op dit moment kunt u typische bewerkingen uitvoeren, zoals het maken van een nieuw document.

function createProduct(item) {
    var context = getContext();
    var container = context.getCollection(); 
    container.createDocument(
        container.getSelfLink(),
        item
    );
}

Deze opgeslagen procedure is bijna voltooid. Hoewel deze code prima wordt uitgevoerd, loopt deze het risico dat fouten worden ingeslikt en mogelijk niet wordt geretourneerd als de opgeslagen procedure de time-out heeft overschreden. We moeten de code bijwerken door nog twee wijzigingen te implementeren:

  • Sla de booleaanse retourwaarde van container.createDocument op en gebruik deze waarde om te bepalen of we moeten terugkeren van de functie vanwege een dreigende servertime-out.

  • Voeg een derde parameter toe aan container.createDocument om potentiĆ«le fouten te verwerken en stel het antwoord van deze opgeslagen procedure in op het zojuist gemaakte item dat is geretourneerd door de bewerking.

function createProduct(item) {
    var context = getContext();
    var container = context.getCollection(); 
    var accepted = container.createDocument(
        container.getSelfLink(),
        item,
        (error, newItem) => {
            if (error) throw error;
            context.getResponse().setBody(newItem)
        }
    );
    if (!accepted) return;
}

Tip

U kunt ook de __ snelkoppeling (dubbele onderstrepingstekens) gebruiken als equivalent aan getContext().getCollection().