Comment inscrire et utiliser des procédures stockées, des déclencheurs et des fonctions définies par l’utilisateur dans Azure Cosmos DB
Article
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é :
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 appeler une procédure stockée à l’aide du kit de développement logiciel (SDK) Python :
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)
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 appeler un pré-déclencheur à l’aide du Kit de développement logiciel (SDK) Python :
item = {'category': 'Personal', 'name': 'Groceries',
'description': 'Pick up strawberries', 'isComplete': False}
result = container.create_item(item, pre_trigger_include='trgPreValidateToDoItemTimestamp')
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
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
}
Le code suivant montre comment inscrire une fonction définie par l’utilisateur à l’aide du SDK .NET v3 :
await client.GetContainer("database", "container").Scripts.CreateUserDefinedFunctionAsync(new UserDefinedFunctionProperties
{
Id = "Tax",
Body = File.ReadAllText(@"..\js\Tax.js")
});
Le code suivant montre comment appeler une fonction définie par l’utilisateur à l’aide du SDK .NET 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
}
}
Le code suivant montre comment inscrire une fonction définie par l’utilisateur à l’aide du kit de développement logiciel (SDK) Java :
Le code suivant montre comment appeler une fonction définie par l’utilisateur à l’aide du kit de développement logiciel (SDK) Python :
results = list(container.query_items(
'query': 'SELECT * FROM Incomes t WHERE udf.Tax(t.income) > 20000'))
É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 :