代码之家  ›  专栏  ›  技术社区  ›  Carlos Rodriguez

Azure函数:如何将http触发器函数的查询字符串参数绑定到Cosmos DB的SQL查询

  •  8
  • Carlos Rodriguez  · 技术社区  · 8 年前

    我正在尝试使用Cosmos DB输入绑定运行http触发器Azure函数。我希望http触发器的url在查询字符串上包含几个参数,这些参数将绑定到输入Cosmos DB绑定的SQL查询。我正在尝试以下绑定 function.json ,但它不起作用(该函数甚至不会被触发):

    {
      "direction": "in",
      "type": "httpTrigger",
      "authLevel": "anonymous",
      "name": "req",
      "methods": [ "get" ],
      "route": "users/{age=age?}/{gender=gender?}"
    },
    {
      "direction": "in",
      "type": "documentDB",
      "name": "users",
      "databaseName": "Database",
      "collectionName": "Users",
      "sqlQuery": "SELECT * FROM x where x.age = {age} and x.gender = {gender}",
      "connection": "COSMOSDB_CONNECTION_STRING"
    },
    

    answer users/{age=age?}/{gender=gender?} 对于Web API有效,并且根据 documentation . 最终,我想向Azure函数发出一个GET请求,看起来像 api/users?age=30&gender=male . 那么应该怎么做呢?

    3 回复  |  直到 8 年前
        1
  •  5
  •   Garth Mason    8 年前

    我认为您无法将Cosmos DB绑定配置为查询参数中定义的值,例如。 ?age=30

    users/{age}/{gender} ,您的Cosmos SqlQuery将在调用GET on时获取这些路由参数 http://yourfunctionhost/yourfunction/users/30/male

        2
  •  1
  •   cinatic    7 年前

    GET和POST参数将被绑定,因此它们可以在sqlQuery中使用,而无需任何其他配置。试一试,这在过去肯定已经改变了

        3
  •  0
  •   lukaszberwid    4 年前


    Azure Cosmos DB input binding for Azure Functions 2.x and higher

    [FunctionName("DocByIdFromQueryString")]
    public static IActionResult Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
            HttpRequest req,
        [CosmosDB(
            databaseName: "ToDoItems",
            collectionName: "Items",
            ConnectionStringSetting = "CosmosDBConnection",
            Id = "{Query.id}",
            PartitionKey = "{Query.partitionKey}")] ToDoItem toDoItem,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
    
        if (toDoItem == null)
        {
            log.LogInformation($"ToDo item not found");
        }
        else
        {
            log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
        }
        return new OkResult();
    }
    
    推荐文章