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

BERLAKU UNTUK: SQL API

SQL API di Azure Cosmos DB mendukung prosedur pendaftaran dan pemanggilan prosedur tersimpan, pemicu, dan fungsi yang ditentukan pengguna (UDF) yang ditulis dalam JavaScript. Setelah menentukan satu atau beberapa prosedur tersimpan, pemicu, dan fungsi yang ditentukan pengguna, Anda dapat memuat dan melihatnya di portal Azure menggunakan Data Explorer.

Anda dapat menggunakan SQL API SDK di beberapa platform termasuk SDK .NET v2 (lama), .NET v3, Java, JavaScript, atau Python untuk melakukan 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 - Membangun aplikasi konsol .NET untuk mengelola sumber daya Azure Cosmos DB SQL API
Java Mulai cepat: Membuat aplikasi Java untuk mengelola data Azure Cosmos DB SQL API
JavaScript Mulai cepat: Gunakan Node.js untuk menyambungkan dan kueri data dari akun Azure Cosmos DB SQL API
Python Mulai cepat: Membangun aplikasi Python menggunakan akun API Microsoft Azure Cosmos DB SQL

Cara menjalankan prosedur tersimpan

Prosedur tersimpan ditulis menggunakan JavaScript. Mereka dapat membuat, memperbarui, membaca, mengkueri, dan menghapus item dalam kontainer Azure Cosmos. Untuk informasi selengkapnya tentang cara menulis prosedur yang disimpan di Microsoft Azure Cosmos DB, lihat artikel Cara menulis prosedur tersimpan di Microsoft Azure Cosmos DB.

Contoh berikut menunjukkan cara mendaftar dan memanggil prosedur tersimpan dengan menggunakan Microsoft Azure Cosmos DB. Lihat Buat Dokumen sebagai sumber untuk menyimpan prosedur tersimpan ini sebagai spCreateToDoItem.js.

Catatan

Untuk kontainer terpartisi, saat menjalankan prosedur tersimpan, nilai kunci partisi harus disediakan dalam opsi permintaan. Prosedur tersimpan selalu dicakup ke kunci partisi. Item yang memiliki nilai kunci partisi yang berbeda tidak akan terlihat oleh prosedur tersimpan. Ini juga diterapkan pada 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 pra-pemicu

Contoh berikut menunjukkan cara mendaftar dan memanggil pra-pemicu dengan menggunakan Microsoft Azure Cosmos DB. Lihat contoh Pra-pemicu sebagai sumber untuk menyimpan pra-pemicu ini sebagai trgPreValidateToDoItemTimestamp.js.

Pra-pemicu diteruskan di objek RequestOptions, saat mengeksekusi operasi, dengan menentukan PreTriggerInclude lalu meneruskan nama pemicu dalam objek Daftar.

Catatan

Meskipun nama pemicu diteruskan sebagai Daftar, Anda masih dapat mengeksekusi hanya satu pemicu per operasi.

Kode berikut menunjukkan cara mendaftarkan pra-pemicu 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 pra-pemicu 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. Lihat Contoh pasca-pemicu sebagai sumber untuk menyimpan pasca-pemicu ini sebagai trgPostUpdateMetadata.js.

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. Lihat contoh Fungsi yang ditentukan pengguna ini sebagai sumber untuk menyimpan pasca-pemicu ini sebagai udfTax.js.

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: