Мне нужно проверить, содержит ли конкретная таблица базы данных SQL переменную currentID.
В настоящее время я выполняю одно действие поиска (имя — GlobalIDs) для запроса таблицы SQL и получения данных.
Результат поиска GlobalIDs
показан ниже.
{
"count": 30,
"value": [
{
"Id": 1200934
},
{
"Id": 1345323
},
{
"Id": 1200932
},
{
"Id": 1200334
},
У меня также есть еще одно действие поиска (имя — CurrentIDs), которое возвращает еще один список текущих значений идентификаторов. У меня есть блок Foreach, внутри которого я просматриваю каждый из CurrentIDs
и присваиваю переменной currentID
повторяемое значение.
Учитывая теперь одну из итераций ForEach, вывод setVariable currentID
выглядит следующим образом:
{
"name": "currentId",
"value": "1345323"
}
Теперь я хочу добавить условие If, чтобы проверить, существует ли это значение currentId
в выходных значениях поиска GlobalIDs
.
Я попробовал использовать условие if с содержанием, как показано ниже:
@contains(activity('GlobalIDs').output.value, variables('currentId'))
Попробовал несколько предложений, найденных в Интернете, но условие If, похоже, не работает таким образом, поскольку оно всегда становится ложным, и я не вижу, чтобы для этого условия отображались какие-либо входные или выходные данные.
Похоже, GlobalIDs
— это массив объектов. У каждого экземпляра есть одно свойство — Id
.
Что мы можем сделать, так это создать объект с этим свойством, соответствующим currentId, следующим образом:
@contains(activity('GlobalIDs').output.value, {'Id': variables('currentId')})
Обновите свое состояние соответствующим образом.
Я могу только подумать, чтобы попробовать это. @contains(union(activity('GlobalIDs').output.value, null) {'Id': variables('currentId')})
. Это гарантирует, что GlobalIDs являются массивом.
Я использовал ту же настройку, что и вы, с двумя действиями поиска и по одному для каждого действия.
Убедитесь, что у вас снят флажок First row only
в обоих действиях поиска.
В разделе «Для каждого действия» установите флажок «Последовательно». Это позволит убедиться, что значение происходит последовательно.
Внутри каждого действия добавлены переменные активности и if активности.
-Условие активности задается как:
@contains(activity('GlobalIDs').output.value,json(concat('{"id":"',variables('currentId'),'"}"')))
Это гарантирует, что если таблица SQL содержит значение, оно будет иметь значение true.
[Если действие for-each параллельно, то все действия внутри for-each будут выполняться параллельно. Таким образом, входные данные для действия условия if не будут такими, как ожидалось. Это было бы что угодно. Это также может быть причиной того, что во всех случаях результат будет ложным.]
Эй, спасибо! Кажется, это работает, теперь оно переходит в состояние True. Однако условие if не отображает никаких входных или выходных данных, подобно тому, как мы видим другие действия в разделе вывода. Есть ли способ увидеть их активность If?
Да... У меня тоже это не показывалось. Я не уверен, сможем ли мы увидеть входные и выходные данные для if activity
Принял решение, буду копать дальше, если действие «Если» действительно может отображать ввод-вывод.
Дайте нам знать, если найдете что-нибудь об этом
Я все еще получал то же самое. Я не вижу никакой ошибки. Но я не вижу, чтобы условие If также оценивалось.