Приложение-функция Azure HTTP-триггер CosmosDB для ввода запроса из тела запроса - PullRequest
0 голосов
/ 12 декабря 2018

Я создал функцию Azure, которая запускается с помощью запроса HTTP POST.
Запрос имеет следующее тело:

{
    "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}",

Doingкак показано здесь, результаты ввода-привязки CosmosDB неопределены.

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)

Если я выполняю один и тот же точный запрос, заменяя start и end на правильные метки времени ISO в CosmosDB Data Explorer, он возвращает всечетыре документа.

Я что-то упустил?Я действительно не нашел ничего по этой теме в Интернете, поэтому я надеюсь, что кто-то уже наткнулся на это.

Заранее большое спасибо!

1 Ответ

0 голосов
/ 13 декабря 2018

Пустой результат пока что ожидается.В привязке к CosmosDB sqlQuery испытывает трудности при обработке вложенного токена (start и end - свойства тела запроса), связанная здесь проблема .

Вот три обходных пути, которые нужно попробовать.

  1. Просто введите start и end в строку запроса, например https://functionUrl?start=<timeA>&end=<timeB>.

  2. В function.json, установите параметр маршрутаstart и end, т.е. добавьте "route": "{start}/{end}", в привязку httpTrigger.Затем укажите время в URL для посещения.

  3. Получите тело запроса и запрос CosmosDB самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...