Cara mendaftarkan dan menggunakan prosedur tersimpan, pemicu, dan fungsi yang ditentukan pengguna di Microsoft Azure Cosmos DB

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:

SDK Memulai
.NET v3 Mulai cepat: Azure Cosmos DB untuk pustaka klien NoSQL untuk .NET
Java Mulai cepat: Membangun aplikasi Java untuk mengelola data Azure Cosmos DB for NoSQL
JavaScript Mulai cepat: Pustaka klien Azure Cosmos DB for NoSQL untuk Node.js
Python Mulai cepat: Azure Cosmos DB untuk pustaka klien NoSQL untuk Python

Penting

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.

Contoh berikut menunjukkan cara mendaftarkan prosedur tersimpan dengan menggunakan .NET SDK v2:

string storedProcedureId = "spCreateToDoItems";
StoredProcedure newStoredProcedure = new StoredProcedure
   {
       Id = storedProcedureId,
       Body = File.ReadAllText($@"..\js\{storedProcedureId}.js")
   };
Uri containerUri = UriFactory.CreateDocumentCollectionUri("myDatabase", "myContainer");
var response = await client.CreateStoredProcedureAsync(containerUri, newStoredProcedure);
StoredProcedure createdStoredProcedure = response.Resource;

Kode berikut menunjukkan cara memanggil prosedur tersimpan dengan menggunakan .NET SDK v2:

dynamic[] newItems = new dynamic[]
{
    new {
        category = "Personal",
        name = "Groceries",
        description = "Pick up strawberries",
        isComplete = false
    },
    new {
        category = "Personal",
        name = "Doctor",
        description = "Make appointment for check up",
        isComplete = false
    }
};

Uri uri = UriFactory.CreateStoredProcedureUri("myDatabase", "myContainer", "spCreateToDoItem");
RequestOptions options = new RequestOptions { PartitionKey = new PartitionKey("Personal") };
var result = await client.ExecuteStoredProcedureAsync<string>(uri, options, new[] { newItems });

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 mendaftarkan pretrigger menggunakan .NET SDK v2:

string triggerId = "trgPreValidateToDoItemTimestamp";
Trigger trigger = new Trigger
{
    Id =  triggerId,
    Body = File.ReadAllText($@"..\js\{triggerId}.js"),
    TriggerOperation = TriggerOperation.Create,
    TriggerType = TriggerType.Pre
};
Uri containerUri = UriFactory.CreateDocumentCollectionUri("myDatabase", "myContainer");
await client.CreateTriggerAsync(containerUri, trigger);

Kode berikut menunjukkan cara memanggil pretrigger menggunakan .NET SDK v2:

dynamic newItem = new
{
    category = "Personal",
    name = "Groceries",
    description = "Pick up strawberries",
    isComplete = false
};

Uri containerUri = UriFactory.CreateDocumentCollectionUri("myDatabase", "myContainer");
RequestOptions requestOptions = new RequestOptions { PreTriggerInclude = new List<string> { "trgPreValidateToDoItemTimestamp" } };
await client.CreateDocumentAsync(containerUri, newItem, requestOptions);

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

Kode berikut menunjukkan cara mendaftarkan pasca-pemicu menggunakan .NET SDK v2:

string triggerId = "trgPostUpdateMetadata";
Trigger trigger = new Trigger
{
    Id = triggerId,
    Body = File.ReadAllText($@"..\js\{triggerId}.js"),
    TriggerOperation = TriggerOperation.Create,
    TriggerType = TriggerType.Post
};
Uri containerUri = UriFactory.CreateDocumentCollectionUri("myDatabase", "myContainer");
await client.CreateTriggerAsync(containerUri, trigger);

Kode berikut menunjukkan cara memanggil pasca-pemicu menggunakan .NET SDK v2:

var newItem = { 
    name: "artist_profile_1023",
    artist: "The Band",
    albums: ["Hellujah", "Rotators", "Spinning Top"]
};

RequestOptions options = new RequestOptions { PostTriggerInclude = new List<string> { "trgPostUpdateMetadata" } };
Uri containerUri = UriFactory.CreateDocumentCollectionUri("myDatabase", "myContainer");
await client.createDocumentAsync(containerUri, newItem, options);

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
}

Langkah berikutnya

Pelajari konsep selengkapnya dan cara menulis atau menggunakan prosedur tersimpan, pemicu, dan fungsi yang ditentukan pengguna di Microsoft Azure Cosmos DB: