azure - 将多值/数组 GET 参数传递给 Azure Function 并在 CosmosDB 中使用
问题描述
我有一个 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 查询的东西来获得所需的结果,但它不起作用:
blub.azure.net/API/myFunc?documentIDs=1&documentIDs=2
SELECT * FROM c WHERE c.id IN ({documentIDs})
注意:我知道我也可以传递一个 json 字符串并在函数中对其进行解码,但是 cosmodb 有超过 1500 万个条目,我不能将它传递给函数,过滤应该在 sql 端完成。所以我需要在它绑定到函数之前使用查询功能对其进行预过滤。
我的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
}
解决方案
无法添加数组参数。
“为了防止注入攻击,在 SqlQuery 属性中使用的任何绑定字符串在发送到您的 Document DB 数据库之前都将替换为 SqlParameter”。从:
推荐阅读
- qt - 是否可以使用 QAudioProbe 捕获发送到音频接口的音频?
- r - GAM 中疏浚函数 (MuMin) 中的固定项
- c# - 单元格更改后更新绑定到可过滤 DataGridView 的原始 BindingList
- mongodb - Robo3T 只会插入第一个 JSON 对象而不会插入第二个?
- assembly - neg 在哪里存储反转的数字?
- javascript - 如何在 Pubnub 中重新连接?
- angular - 在 Angular 反应形式中,我无法使用文件的输入类型获取文件。onchange 事件只返回 "isTrusted":true
- compilation - “安装”一种编程语言的真正含义是什么?
- python - 如何在 DRF 的序列化程序中获取嵌套对象的详细信息
- xamarin - xamarin:将 mp3 转换为 pcm16 (wav) 以访问原始字节