Cosmos DB — это мощная, полностью управляемая, глобально распределенная и мультимодельная служба базы данных, предоставляемая Microsoft Azure. Одной из его ключевых функций является возможность создавать и выполнять хранимые процедуры, представляющие собой функции JavaScript, которые можно использовать для выполнения операций с данными в вашем контейнере. В этом посте мы рассмотрим, как создать и выполнить хранимую процедуру в Cosmos DB, которая обновляет документ в контейнере.
Создание хранимой процедуры
Чтобы создать хранимую процедуру, нам нужно предоставить функцию JavaScript, которая выполняет желаемую операцию. В этом случае мы хотим обновить документ в контейнере, поэтому мы создадим функцию, которая принимает в качестве параметров идентификатор документа, который нужно обновить, и сам обновленный документ. Затем функция извлечет документ из контейнера, используя предоставленный идентификатор, и заменит старый документ обновленным.
Вот пример функции JavaScript, которую мы можем использовать для обновления документа в контейнере:
function updateDocument(id, updatedDoc) { var container = getContext().getCollection(); var query = "SELECT * FROM c WHERE c.id = '" + id + "'"; var accept = container.queryDocuments(container.getSelfLink(), query, function (err, documents, options) { if (err) throw new Error("Error: " + err.message); if (documents.length != 1) throw new Error("Document not found"); var doc = documents[0]; doc = updatedDoc; container.replaceDocument(doc._self, doc, function (err, updatedDoc) { if (err) throw new Error("Error: " + err.message); getContext().getResponse().setBody(updatedDoc); }); }); if (!accept) throw new Error("Unable to read document"); }
Важно отметить, что вы должны заменить ссылку на контейнер ссылкой на ваш контейнер в приведенном выше коде.
Выполнение хранимой процедуры
После создания хранимой процедуры ее можно выполнить на портале Azure, используя:
- Перейдите в свою учетную запись Cosmos DB на портале Azure.
- Выберите базу данных, содержащую контейнер, в котором находится ваш документ.
- Выберите вкладку «Хранимые процедуры».
- Нажмите на кнопку «Выполнить».
- В колонке «Выполнение хранимой процедуры» введите идентификатор документа, который вы хотите обновить, и обновленный документ в предоставленных полях ввода.
- Нажмите кнопку «Выполнить», чтобы запустить хранимую процедуру.
Кроме того, вы можете вызвать хранимую процедуру через SDK, создав клиент, передав идентификатор и параметры хранимой процедуры.
var client = new CosmosClient(connectionString); var storedProcedure = client.getStoredProcedure("your container link", "updateDocument"); var response = await storedProcedure.execute({id: "your document id", updatedDoc: {your updated document}});
Подводя итог, можно сказать, что хранимые процедуры Cosmos DB предлагают надежный и адаптируемый подход к управлению данными с высокой доступностью и масштабируемостью. Следуя шагам, описанным в этом руководстве, вы теперь можете создать и выполнить хранимую процедуру, которая обновляет документ в контейнере, упрощая обновление и организацию ваших данных. С помощью инструментов, представленных в этом посте, вы можете начать использовать хранимые процедуры в своих проектах Cosmos DB. Не забывайте тестировать свой код и отслеживать производительность и масштабируемость решения по мере разработки и развертывания приложения.