gpt4 book ai didi

Azure Function App HTTP 从请求正文触发 CosmosDB 输入查询

转载 作者:行者123 更新时间:2023-12-03 01:04:09 24 4
gpt4 key购买 nike

我创建了一个通过 HTTP POST 请求触发的 Azure 函数。
该请求的正文如下所示:

{
"start": '2018-07-25T08:47:16.094Z',
"end": '2018-07-25T08:47:24.686Z'
}

index.js

module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');

var inputDocument = context.bindings.inputDocument;
context.log("INPUT DOCUMENT: " + JSON.stringify(inputDocument));
context.res = {
status: 200,
body: "OK",
};
};

function.json

{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"type": "cosmosDB",
"name": "inputDocument",
"databaseName": "Messages",
"collectionName": "Collection1",
"sqlQuery": "SELECT * FROM Collection1 c WHERE c.message.timestamp>={start} AND c.message.timestamp<={end}",
"connectionStringSetting": "cosmosdbaccount_DOCUMENTDB",
"direction": "in"
}
]
}

我想使用这两个参数查询 CosmosDB 实例,如下所示:

"sqlQuery": "SELECT * FROM Collection1 c WHERE c.message.timestamp>={start} AND c.message.timestamp<={end}",

像我在这里展示的那样执行会导致 CosmosDB 的 inputBinding 未定义。

2018-12-13T08:19:54.332 [Information] Executing 'Functions.Function1' (Reason='This function was programmatically called via the host APIs.', Id=af8090a4-5fab-4fbd-b26f-a045d8900d9b)
2018-12-13T08:19:56.704 [Information] JavaScript HTTP trigger function processed a request.
2018-12-13T08:19:56.711 [Information] INPUT DOCUMENT: []
2018-12-13T08:19:56.755 [Information] Executed 'Functions.Function1' (Succeeded, Id=af8090a4-5fab-4fbd-b26f-a045d8900d9b)

如果我在 CosmosDB 数据资源管理器中运行相同的查询,将 startend 替换为正确的 ISO 时间戳,它将返回所有四个文档。

我错过了什么吗?我确实在网上没有找到任何有关此主题的信息,因此我希望有人已经偶然发现了它。

提前非常感谢!

最佳答案

目前看来,结果为空。在 CosmosDB 绑定(bind)中,sqlQuery处理嵌套 token 有困难( startend 是请求正文的属性), related issue here .

以下是可以尝试的三种解决方法。

  1. 简单地说startend在查询字符串中,例如 https://functionUrl?start=<timeA>&end=<timeB> .

  2. function.json ,设置路由参数startend ,即添加"route": "{start}/{end}",在 httpTrigger 绑定(bind)中。然后在url中输入时间即可访问。

  3. 获取请求正文和 query CosmosDB靠我们自己。

关于Azure Function App HTTP 从请求正文触发 CosmosDB 输入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53747922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com