我有一个Azure函数(http触发),它返回来自CosmosDB(SQL API)的文档。
当我定义SQL QUERY时,CosmosDB已经集成并运行良好:
SELECT * FROM c where c.id = {documentID}
当我使用以下url触发http请求时,我将按照预期从数据库中获取ID为1的文档。
blub.azure.net/API/myFunc?documentID=1
现在我想在参数化SQL查询中使用多个ID。我应该如何用Azure做到这一点。通常情况下,我希望使用类似下面的URL和SQL Query来获得所需的结果,但它不起作用:
blub.azure.net/API/myFunc?documentIDs=1&documentIDs=2
SELECT * FROM c WHERE c.id IN({documentIDs})
注意:我知道我也可以传递一个json字符串并在函数中对其进行解码,但是cosmodb有超过1500万个条目,我无法将其传递给函数,过滤应该在sql上完成侧。所以我需要使用查询功能预先过滤它才能绑定到函数。
my function.json:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"type": "documentDB",
"name": "lastDataPoints",
"databaseName": "dp-db-04",
"collectionName": "lastDataPointsCollection",
"connection": "ldpdbconnectionstring",
"direction": "in",
"sqlQuery": "SELECT * FROM c WHERE c.id = {documentID}"
}
],
"disabled": false
}
答案 0 :(得分:1)
无法添加数组参数。
“为了防止注入攻击,在发送到Document DB数据库之前,SqlQuery属性中使用的任何绑定字符串都将替换为SqlParameter”。从: