Tworzenie procedur składowanych
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()
.