Compartir vía


Consultas parametrizadas en Azure Cosmos DB for NoSQL

SE APLICA A: NoSQL

Azure Cosmos DB for NoSQL admite consultas con parámetros expresados mediante la conocida notación @. El uso de SQL con parámetros permite controlar y evitar de forma coherente la entrada por parte de los usuarios, e impide la exposición accidental de datos a través de la inyección de código SQL.

Ejemplos

Por ejemplo, puedes escribir una consulta que tome upperPriceLimit como parámetro, y ejecutarla para distintos valores de price en función de la entrada de usuario.

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

Luego puede enviar esta solicitud a Azure Cosmos DB for NoSQL como un objeto de consulta JSON parametrizado.

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

El siguiente ejemplo establece el TOP argumento con una consulta parametrizada:

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

Los valores de los parámetros pueden ser cualquier tipo de JSON válido: cadenas, números, booleanos, null o incluso matrices o JSON anidado. Dado que Azure Cosmos DB for NoSQL no tiene esquema, los parámetros no se validan en función de ningún tipo.

Estos son ejemplos de consultas parametrizadas en cada SDK de Azure Cosmos DB for NoSQL: