Cara mendaftarkan dan menggunakan prosedur tersimpan, pemicu, dan fungsi yang ditentukan pengguna di Microsoft Azure Cosmos DB
Artikel
BERLAKU UNTUK: NoSQL
API untuk NoSQL di Azure Cosmos DB mendukung pendaftaran dan pemanggilan prosedur tersimpan, pemicu, dan fungsi yang ditentukan pengguna (UDF) yang ditulis dalam JavaScript. Setelah menentukan satu atau beberapa prosedur tersimpan, pemicu, atau fungsi yang ditentukan pengguna, Anda dapat memuat dan melihatnya di portal Azure dengan menggunakan Data Explorer.
Anda dapat menggunakan API untuk NoSQL SDK di beberapa platform termasuk .NET v2 (warisan), .NET v3, Java, JavaScript, atau Python SDK untuk melakukan tugas-tugas ini. Jika Anda belum bekerja dengan salah satu SDK ini sebelumnya, lihat artikel mulai cepat untuk SDK yang sesuai:
Sampel kode berikut mengasumsikan bahwa Anda telah memiliki client variabel dan container . Jika Anda perlu membuat variabel tersebut, lihat mulai cepat yang sesuai untuk platform Anda.
Cara menjalankan prosedur tersimpan
Prosedur tersimpan ditulis menggunakan JavaScript. Mereka dapat membuat, memperbarui, membaca, mengkueri, dan menghapus item dalam kontainer Azure Cosmos DB. Untuk informasi selengkapnya, lihat Cara menulis prosedur tersimpan.
Contoh berikut menunjukkan cara mendaftar dan memanggil prosedur tersimpan dengan menggunakan Microsoft Azure Cosmos DB. Untuk sumber prosedur tersimpan ini, disimpan sebagai spCreateToDoItem.js, lihat Membuat item menggunakan prosedur tersimpan.
Catatan
Untuk kontainer yang dipartisi, saat menjalankan prosedur tersimpan, Anda harus memberikan nilai kunci partisi dalam opsi permintaan. Prosedur tersimpan selalu dicakup ke kunci partisi. Item yang memiliki nilai kunci partisi yang berbeda tidak terlihat oleh prosedur tersimpan. Prinsip ini juga berlaku untuk pemicu.
Kode berikut menunjukkan cara memanggil prosedur tersimpan dengan menggunakan Python SDK:
import uuid
new_id= str(uuid.uuid4())
# Creating a document for a container with "id" as a partition key.
new_item = {
"id": new_id,
"category":"Personal",
"name":"Groceries",
"description":"Pick up strawberries",
"isComplete":False
}
result = container.scripts.execute_stored_procedure(sproc=created_sproc,params=[new_item], partition_key=new_id)
Cara menjalankan pretrigger
Contoh berikut menunjukkan cara mendaftar dan memanggil pretrigger dengan menggunakan SDK Azure Cosmos DB. Untuk sumber contoh pretrigger ini, disimpan sebagai trgPreValidateToDoItemTimestamp.js, lihat Pretrigger.
Saat Anda menjalankan operasi dengan menentukan PreTriggerInclude lalu meneruskan nama pemicu dalam List objek, praperadilan diteruskan dalam RequestOptions objek.
Catatan
Meskipun nama pemicu diteruskan sebagai List, Anda masih dapat menjalankan hanya satu pemicu per operasi.
Kode berikut menunjukkan cara memanggil pretrigger menggunakan Python SDK:
item = {'category': 'Personal', 'name': 'Groceries',
'description': 'Pick up strawberries', 'isComplete': False}
result = container.create_item(item, pre_trigger_include='trgPreValidateToDoItemTimestamp')
Cara menjalankan pasca-pemicu
Contoh berikut menunjukkan cara mendaftarkan pasca-pemicu dengan menggunakan Microsoft Azure Cosmos DB SDK. Untuk sumber contoh pasca-pemicu ini, disimpan sebagai trgPostUpdateMetadata.js, lihat Pasca-pemicu
Cara bekerja dengan fungsi yang ditentukan pengguna
Contoh berikut menunjukkan cara mendaftarkan fungsi yang ditentukan pengguna dengan menggunakan Microsoft Azure Cosmos DB. Untuk sumber contoh fungsi yang ditentukan pengguna ini, disimpan sebagai udfTax.js, lihat Cara menulis fungsi yang ditentukan pengguna.
Kode berikut menunjukkan cara mendaftarkan fungsi yang ditentukan pengguna menggunakan .NET SDK v2:
string udfId = "Tax";
var udfTax = new UserDefinedFunction
{
Id = udfId,
Body = File.ReadAllText($@"..\js\{udfId}.js")
};
Uri containerUri = UriFactory.CreateDocumentCollectionUri("myDatabase", "myContainer");
await client.CreateUserDefinedFunctionAsync(containerUri, udfTax);
Kode berikut menunjukkan cara memanggil fungsi yang ditentukan pengguna menggunakan .NET SDK v2:
Uri containerUri = UriFactory.CreateDocumentCollectionUri("myDatabase", "myContainer");
var results = client.CreateDocumentQuery<dynamic>(containerUri, "SELECT * FROM Incomes t WHERE udf.Tax(t.income) > 20000"));
foreach (var result in results)
{
//iterate over results
}
Kode berikut menunjukkan cara mendaftarkan fungsi yang ditentukan pengguna menggunakan .NET SDK v3:
await client.GetContainer("database", "container").Scripts.CreateUserDefinedFunctionAsync(new UserDefinedFunctionProperties
{
Id = "Tax",
Body = File.ReadAllText(@"..\js\Tax.js")
});
Kode berikut menunjukkan cara memanggil fungsi yang ditentukan pengguna menggunakan .NET SDK v3:
var iterator = client.GetContainer("database", "container").GetItemQueryIterator<dynamic>("SELECT * FROM Incomes t WHERE udf.Tax(t.income) > 20000");
while (iterator.HasMoreResults)
{
var results = await iterator.ReadNextAsync();
foreach (var result in results)
{
//iterate over results
}
}
Kode berikut menunjukkan cara mendaftarkan fungsi yang ditentukan pengguna menggunakan Java SDK:
Kode berikut menunjukkan cara memanggil fungsi yang ditentukan pengguna menggunakan Python SDK:
results = list(container.query_items(
'query': 'SELECT * FROM Incomes t WHERE udf.Tax(t.income) > 20000'))
Langkah berikutnya
Pelajari konsep selengkapnya dan cara menulis atau menggunakan prosedur tersimpan, pemicu, dan fungsi yang ditentukan pengguna di Microsoft Azure Cosmos DB: