sqlQuery со строкой запроса в функциях Azure 2.x?

У меня есть приложение в функции 1.x, которое получает objId из строк запроса, запрашивает CosmosDb (привязка ввода), а затем выполняет остальную часть работы. Тем не менее, я перевожу его в v2, и он не работает, как раньше: он запрашивает db, только если objId указан в шаблоне маршрута, но не если objId предоставляется в виде строки запроса (в v1 он работает даже если это предоставлено как строка запроса). Хотя моя функция.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) {
}

И следующее содержание моего прокси.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

1 ответ

Что касается документов, кажется, что значения запроса, в отличие от данных маршрута, не могут быть переданы в запрос sql.

https://docs.microsoft.com/en-in/azure/azure-functions/functions-bindings-cosmosdb-v2

Из приведенной выше ссылки: "HTTP-триггер, найдите идентификатор из данных маршрута, используя SqlQuery (C#). В следующем примере показана функция C#, которая извлекает один документ. Функция запускается HTTP-запросом, который использует данные маршрута для указания идентификатора. искать. Этот идентификатор используется для извлечения документа ToDoItem из указанной базы данных и коллекции

В примере показано, как использовать выражение привязки в параметре SqlQuery. Вы можете передать данные маршрута параметру SqlQuery, как показано, но в настоящее время вы не можете передать значения строки запроса. "

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Однако если вам нужно только получить документ по Id, вы можете, кажется, в вашем файле function.json заменить "sqlQuery": "SELECT * FROM c, где c.id = {objId}" на "Id": "{Query. Я бы}"

Другие вопросы по тегам