оператор if внутри JavaScript-функции Azure не работает - PullRequest
0 голосов
/ 13 декабря 2018

Цель

Моя компания использует платформу экстрасети, которая позволяет клиентам публиковать "идеи" для улучшения продукта.Мы хотели бы публиковать уведомления об этих идеях в Slack.Платформа экстранет не предлагает веб-крючок для идей.Он действительно предлагает API идей.Однако он не предлагает способ запроса идей, созданных до, после или между двумя временными метками.API идей возвращает дату создания идеи в виде временной метки: 2018-11-13T02:03:31.583.Он также возвращает имя автора, который опубликовал идею, и текст идеи.

Лучшее решение, которое я могу придумать, - это использовать приложение Azure Logic, которое:

  • Опрашивает API идей для последнего X количества идей один раз в день
  • Для каждой идеи передает дату создания, автора и текстовые поля возвращенного объекта JSON в функцию Azure (код приведен ниже)
  • Функция Azure сравнивает поле даты создания с сегодняшней датой
  • Если даты совпадают, функция Azure отправляет текстовое и авторское поля обратно в приложение логики Azure для отправки в Slack
  • Если даты не совпадают, функция Azure ничего не делает

Код

Ввод

(я оставил метаданные другой идеи в JSON, например, автораи текст, чтобы упростить мой вопрос)

{
    "date": "2018-12-12T17:34:07.693"
}

Функция Azure index.js

module.exports = function (context, data) {
    var ideaDate = data.body;

    var ideaDate2 = JSON.stringify(ideaDate);
    var ideaDate3 = JSON.parse(ideaDate2);
    var ideaDate4 = ideaDate3.date;
    // Extract date only
    var ideaDate5 = ideaDate4.substring(0, 10);

    // Get today's date
    var todaysDate = new Date();
    var localDate = new Date(todaysDate);
    var localDate1 = localDate.toISOString().toString()
    // Extract date only
    var localDate2 = localDate1.substring(0, 10);


    ///PROBLEMATIC LINE
    if (new String(ideaDate5).valueOf() === new String(localDate2).valueOf()) {

        // Response of the function to be used later
        context.res = {
            body: {
                ideaDate,
                ideaDate2,
                ideaDate3,
                ideaDate4,
                ideaDate5,
                todaysDate,
                localDate,
                localDate1,
                localDate2
            }
        };
    }

    context.done();
};

Вывод

500: Internal Service Error

Вывод, который успешно без проблем, еслистрока заявления

Я нахожусь ввключая все переменные в выводе, чтобы продемонстрировать, что происходит во время работы скрипта.

{
    "ideaDate": {
        "date": "2018-12-12T17:34:07.693"
    },
    "ideaDate2": "{\"date\":\"2018-12-12T17:34:07.693\"}",
    "ideaDate3": {
        "date": "2018-12-12T17:34:07.693"
    },
    "ideaDate4": "2018-12-12T17:34:07.693",
    "ideaDate5": "2018-12-12",
    "todaysDate": "2018-12-12T23:51:26.110Z",
    "localDate": "2018-12-12T23:51:26.110Z",
    "localDate1": "2018-12-12T23:51:26.110Z",
    "localDate2": "2018-12-12"
}

Я новичок в JavaScript

Спасибо за любые советы, которые обнаруживают проблему или рекомендуют лучший процесс полностью.

Редактировать

Спасибо ABOS за указание на то, что в операторе if должны быть круглые скобки.Я добавил их в коде, напечатанном выше.Функция Azure больше не возвращает ошибку.Однако он не возвращает поля JSON в выходных данных.

Но я очень рад быть на шаг ближе.

Редактировать 2

function.json в AzureФункция:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ]
}

1 Ответ

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

Измените дату ввода в соответствии с текущим временем UTC, и код должен вернуть тело JSON, как и ожидалось.И некоторые улучшения для вашего кода.

module.exports = function (context, data) {
    var ideaDate = new Date(data.body.date).toISOString().substring(0, 10);
    var todaysDate  = new Date().toISOString().substring(0, 10);

    if (ideaDate === todaysDate) {

        context.res = {
            body: {
               ideaDate,
               todaysDate
            }
        };
    }

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