Comment inscrire et utiliser des procédures stockées, des déclencheurs et des fonctions définies par l’utilisateur dans Azure Cosmos DB

S’APPLIQUE À : NoSQL

L’API pour NoSQL dans Azure Cosmos DB prend en charge l’inscription et l’appel de procédures stockées, déclencheurs et fonctions définies par l’utilisateur (UDF) écrites en JavaScript. Après avoir défini un(e) ou plusieurs procédures stockées, déclencheurs ou fonctions définies par l’utilisateur, vous pouvez les charger et les afficher dans le Portail Azure à l’aide de l’Explorateur de données.

Vous pouvez utiliser le kit de développement logiciel (SDK) de l’API pour NoSQL sur plusieurs plateformes, notamment les kits de développement logiciel (SDK) .NET v2 (hérité), .NET v3, Java, JavaScript ou Python pour effectuer ces tâches. Si vous n’avez pas déjà utilisé l’un de ces kits de développement logiciel (SDK), consultez l’article Démarrage rapide du kit de développement logiciel (SDK) approprié :

Kit SDK Prise en main
.NET v3 Démarrage rapide : bibliothèque de client Azure Cosmos DB for NoSQL pour .NET
Java Démarrage rapide : Générer une application Java pour gérer les données d’Azure Cosmos DB for NoSQL
JavaScript Démarrage rapide : Bibliothèque de client Azure Cosmos DB for NoSQL pour Node.js
Python Démarrage rapide : Bibliothèque de client Azure Cosmos DB for NoSQL pour Python

Important

Les exemples de code suivants supposent que vous avez déjà des variables client et container. Si vous devez créer ces variables, consultez le démarrage rapide approprié pour votre plateforme.

Comment exécuter des procédures stockées

Les procédures stockées sont écrites à l’aide de JavaScript. Elles peuvent créer, mettre à jour, lire, interroger et supprimer des éléments dans un conteneur Azure Cosmos DB. Pour plus d’informations, consultez Comment écrire des procédures stockées.

Les exemples suivants montrent comment inscrire et appeler une procédure stockée à l’aide des kits de développement logiciel (SDK) Azure Cosmos DB. Pour connaître la source de cette procédure stockée, enregistrée comme spCreateToDoItem.js, consultez l’article Créer des éléments à l’aide de procédures stockées.

Notes

Pour les conteneurs partitionnés, lorsque vous exécutez une procédure stockée, vous devez fournir une valeur de clé de partition dans les options de la requête. Les procédures stockées se limitent toujours à une clé de partition. Les éléments qui ont une valeur de clé de partition différente ne sont pas visibles dans la procédure stockée. Ce principe s’applique également aux déclencheurs.

L’exemple suivant montre comment inscrire une procédure stockée à l’aide du SDK .NET 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;

Le code suivant montre comment appeler une procédure stockée à l’aide du SDK .NET 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 });

Comment exécuter des pré-déclencheurs

Les exemples suivants montrent comment inscrire et appeler un pré-déclencheur à l’aide des Kits de développement logiciel (SDK) Azure Cosmos DB. Pour obtenir la source de cet exemple de pré-déclencheur, enregistré comme trgPreValidateToDoItemTimestamp.js, consultez Pré-déclencheurs.

Lorsque vous exécutez une opération en spécifiant PreTriggerInclude, puis en transmettant le nom du déclencheur dans un objet List, les pré-déclencheurs sont transmis dans l’objet RequestOptions.

Notes

Même si le nom du déclencheur est transmis comme List, vous ne pouvez exécuter qu’un déclencheur par opération.

Le code suivant montre comment inscrire un pré-déclencheur à l’aide du Kit de développement logiciel (SDK) .NET 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);

Le code suivant montre comment appeler un pré-déclencheur à l’aide du Kit de développement logiciel (SDK) .NET 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);

Comment exécuter les post-déclencheurs

Les exemples suivants montrent comment inscrire un post-déclencheur à l’aide des kits de développement logiciel (SDK) Azure Cosmos DB. Pour obtenir la source de cet exemple de post-déclencheur, enregistré comme trgPostUpdateMetadata.js, consultez Post-déclencheurs

Le code suivant montre comment inscrire un post-déclencheur à l’aide du SDK .NET 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);

Le code suivant montre comment appeler un post-déclencheur à l’aide du SDK .NET 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);

Comment utiliser des fonctions définies par l’utilisateur

Les exemples suivants montrent comment inscrire une fonction définie par l’utilisateur à l’aide des kits de développement logiciel (SDK) Azure Cosmos DB. Pour obtenir la source de cet exemple de fonction définie par l’utilisateur, enregistré comme udfTax.js, consultez Comment écrire des fonctions définies par l’utilisateur.

Le code suivant montre comment inscrire une fonction définie par l’utilisateur à l’aide du SDK .NET 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);

Le code suivant montre comment appeler une fonction définie par l’utilisateur à l’aide du SDK .NET 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
}

Étapes suivantes

Découvrez plus de concepts et comment écrire et utiliser des procédures stockées, des déclencheurs et des fonctions définies par l’utilisateur dans Azure Cosmos DB :