我正在使用azure-function-express
节点模块。该文档提到了{*segments}
的使用,但没有提供太多上下文信息。
这是我的function.json
文件的样子:
{
"disabled": false,
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"route": "{*segments}",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"type": "cosmosDB",
"name": "inputDocument",
"databaseName": "GBuckets",
"collectionName": "buckets",
"sqlQuery": "select * from GBuckets c join b in c.buckets where b.bucketid = {bucketId}",
"connectionStringSetting": "bucketsdb",
"direction": "in"
}
]
}
bucketId
应该作为{*segments}
的一部分出现,我的node.js代码可以处理它。
但是,当我尝试运行此代码时,它会引发以下错误:
Exception while executing function: Functions.func_name. System.Private.CoreLib: The given key 'bucketId' was not present in the dictionary.
很显然,它无法解析function.json
文件中的'bucketId'。
我该如何解决而不必走CosmosClient路线?
谢谢。
答案 0 :(得分:0)
这可能不适用于azure-functions-express。除非已命名,否则Azure Functions无法从路径推断出什么“ bucketId”。 azure-functions-express需要通配符访问,因此不兼容。
如果您想继续使用azure-functions-express,我建议直接使用Cosmos SDK。它有一个新版本(@ azure / cosmos),它具有Promise / etc等现代功能。这真的很好。 (但是我有偏见,因为我写了它...)