Цель
Моя компания использует платформу экстрасети, которая позволяет клиентам публиковать «идеи» для улучшения продукта. Мы хотели бы публиковать уведомления об этих идеях в Slack. Платформа экстранета не предлагает веб-перехватчиков для идей. Он предлагает API идей. Однако он не предлагает способа запроса идей, созданных до, после или между двумя отметками времени. API идей возвращает дату создания идеи в виде отметки времени, например: 2018-11-13T02:03:31.583
. Он также возвращает имя автора, опубликовавшего идею, и текст идеи.
Лучшее решение, которое я могу придумать, - использовать приложение Azure Logic, которое:
- Опрашивает API идей для получения последних X идей один раз в день.
- Для каждой идеи отправляет дату создания, автора и текстовые поля возвращенного объекта JSON в функцию Azure (код приведен ниже).
- Функция Azure сравнивает поле даты создания с сегодняшней датой.
- Если даты совпадают, функция Azure отправляет поля автора и текстовые поля обратно в приложение Azure Logic для отправки в 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
Успешный вывод без проблемной строки оператора if
Я включаю все переменные в вывод, чтобы продемонстрировать, что происходит при запуске скрипта.
{
"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"
}
]
}
it does not return the JSON fields in the output
Вы имеете в виду, что не получаете ответ Json в приложении Logic или что? Не могли бы вы показатьfunction.json
? - person Jerry Liu   schedule 13.12.20182018-12-12T17:34:07.693
во входных данных, он не будет выполнять сегмент if, поскольку время UTC сейчас 12-13. - person Jerry Liu   schedule 13.12.2018