我在Function 1.x中有一个应用程序,它从查询字符串中获取objId,查询CosmosDb (输入绑定),然后做剩下的工作。但是,我正在将它迁移到v2中,并且它不像以前那样工作:它只在路由模板中提供objId时才查询数据库,而不是在objId作为查询字符串提供时查询数据库(在v1中,即使它作为查询字符串提供,它也可以工作)。即使我的function.json几乎一样。您能告诉我出了什么问题吗?如何使输入绑定通过查询字符串执行sql查询?
以下是我的function.json的内容:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"type": "cosmosDB",
"name": "obj",
"databaseName": "mydb",
"collectionName": "objects",
"sqlQuery": "SELECT * FROM c where c.id = {objId}",
"connectionStringSetting": "mydbstring",
"direction": "in"
}
],
"disabled": false
}
下面是我的函数代码
const client = new CosmosClient({
endpoint: endpoint,
auth: {
masterKey: masterKey
}
});
module.exports = async function (context, req, obj) {
}
下面是我的proxies.json的内容:
{
"$schema": "http://json.schemastore.org/proxies",
"proxies": {
"Set Object state Id Proxy": {
"matchCondition": {
"route": "/obj/{objId}/state",
"methods": [
"GET"
]
},
"backendUri": "http://localhost:7071/api/setobjstate?objId={objId}"
}
}
它是这样工作的:
http://localhost:7071/games/bbbbb
但是我怎么才能让它这样工作呢?
http://localhost:7071/games?objId=bbbbbbbbb
发布于 2018-12-12 04:12:15
根据文档,查询值似乎与路由数据不同,不能传递给sql查询。
下面的示例显示了一个检索单个文档的C#函数。该函数由使用路由数据指定要查找的ID的HTTP请求触发。该ID用于从指定的数据库和集合中检索ToDoItem文档
该示例说明如何在SqlQuery参数中使用绑定表达式。您可以将路由数据传递给SqlQuery参数,如下所示,但当前不能传递查询字符串值。“
===
但是,如果您只需要按Id检索文档,您似乎可以在function.json中将"sqlQuery":"SELECT * FROM c where c.id = {objId}“替换为"Id":"{Query.id}”
https://stackoverflow.com/questions/53729305
复制相似问题