Requêtes paramétrables dans Azure Cosmos DB for NoSQL

S’APPLIQUE À : NoSQL

Azure Cosmos DB for NoSQL prend en charge les requêtes avec des paramètres exprimées par la notation @ classique. SQL paramétré fournit une gestion et un échappement robustes de l’entrée utilisateur et empêche l’exposition accidentelle des données via l’injection SQL.

Exemples

Par exemple, vous pouvez écrire une requête qui accepte lastName et address.state comme paramètres, et l’exécuter pour différentes valeurs de lastName et address.state basées sur l’entrée d’utilisateur.

SELECT
    *
FROM
    p
WHERE
    (NOT p.onSale) AND
    (p.price BETWEEN 0 AND @upperPriceLimit)

Vous pouvez ensuite envoyer cette demande à Azure Cosmos DB for NoSQL sous la forme d’un objet de requête JSON paramétrable.

{
  "query": "SELECT * FROM p WHERE (NOT p.onSale) AND (p.price BETWEEN 0 AND @upperPriceLimit)",
  "parameters": [
    {
      "name": "@upperPriceLimit",
      "value": 100
    }
  ]
}

L’exemple suivant définit l’argument TOP avec une requête paramétrable :

{
  "query": "SELECT TOP @pageSize * FROM products",
  "parameters": [
    {
      "name": "@pageSize",
      "value": 10
    }
  ]
}

Les valeurs de paramètres peuvent être n’importe quel format JSON valide : chaînes, nombres, booléens, Null, même des tableaux ou des valeurs JSON imbriquées. Azure Cosmos DB for NoSQL étant sans schéma, les paramètres ne sont pas validés par rapport à un type.

Voici des exemples pour des requêtes paramétrables dans chaque kit de développement logiciel (SDK) Azure Cosmos DB for NoSQL :