Tworzenie procedur składowanych

Ukończone

Transakcje są definiowane jako funkcje języka JavaScript. Funkcja jest następnie wykonywana po wywołaniu procedury składowanej.

function name() {
}

W ramach funkcji getContext() metoda pobiera obiekt kontekstu, który może służyć do wykonywania wielu akcji, w tym:

  • Uzyskiwanie dostępu do obiektu odpowiedzi HTTP

  • Uzyskiwanie dostępu do odpowiedniego kontenera usługi Azure Cosmos DB for NoSQL

Za pomocą obiektu kontekstu można wywołać getResponse() metodę, aby uzyskać dostęp do obiektu odpowiedzi HTTP w celu wykonywania akcji, takich jak zwracanie adresu HTTP OK (200) i ustawianie treści odpowiedzi na ciąg statyczny.

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

Ponownie, używając obiektu kontekstu, można wywołać metodę getCollection() w celu uzyskania dostępu do kontenera przy użyciu interfejsu API zapytań Języka JavaScript.

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

W tym momencie można wykonywać typowe operacje, takie jak tworzenie nowego dokumentu.

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

Ta procedura składowana jest prawie kompletna. Mimo że ten kod będzie działać prawidłowo, oznacza to ryzyko połknięcia błędów i potencjalnie nie zwracania, jeśli procedura składowana przekroczyła limit czasu. Powinniśmy zaktualizować kod, implementując jeszcze dwie zmiany:

  • Zapisz wartość zwracaną przez wartość logiczną container.createDocument, a następnie użyj tej funkcji, aby określić, czy należy zwrócić z funkcji z powodu zbliżającego się limitu czasu serwera.

  • Dodaj trzeci parametr do obiektu container.createDocument, aby obsłużyć potencjalne błędy i ustawić odpowiedź tej procedury składowanej na nowo utworzony element zwrócony z operacji.

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;
}

Napiwek

Alternatywnie możesz użyć skrótu __ (podwójnego podkreślenia) jako odpowiednika getContext().getCollection().