写点什么

在 Logic App 中使用内联脚本获取最新的数组项

  • 2020-03-30
  • 本文字数:1882 字

    阅读完需:约 6 分钟

在Logic App中使用内联脚本获取最新的数组项

在我的上一篇文章中,通过组合使用Select动作Filter动作,我们已经了解了如何使用Logic App工作流来获取一个数组中的最新的项。事实上,虽然这种做法是可行的,但它仅适用于一些特定的使用情况,对大多数情况来说,这个解决方案有点棘手。但是,有一个预览功能:内联 JavaScript 代码动作,可以方便地对数组排序。在这篇文章中,我将讨论如何使用内联 JavaScript 代码动作排序数组项,并获取 Logic App 工作流中的最新的项。

集成账户

为了使用这个内联 JavaScript 代码动作,我们必须提供一个集成账户实例。集成帐户有三种定价层 - 免费、基本和标准。对于我们的例子来说,免费的已经足够了。


一旦提供了集成帐户实例,将其与现有的 Logic App 实例连接起来以使用动作。


JavaScript 支持

目前,该动作仅支持 node.js 8.11.1内置函数。我们无法通过npm导入外部库。因此,我们不能依赖于任何require()语句。所有内容必须被包含在该动作中。

内联 JavaScript 代码

让我们来看看下面的 JavaScript 代码。它不涉及 Logic App,只是纯 JavaScript 代码。如果您在 node.js 的控制台运行这段代码,它将返回20191104.json最新的文件路径值,这也是预期的值。 JavaScript 的数组排序功能需要一个单独的回调函数,其中包含排序逻辑。


"use strict";
var items = [ {"Name": "20191101.json","Path": "/path/20191101.json" }, {"Name": "20191102.json","Path": "/path/20191102.json" }, {"Name": "20191103.json","Path": "/path/20191103.json" }, {"Name": "20191104.json","Path": "/path/20191104.json" }];
var sorted = items.sort(function (a, b) {var dateA = a.Name.replace('.json', '');var dateB = b.Name.replace('.json', '');
// dateA is later than dateB: dateA gets the lower index.if (dateA > dateB) {return -1; }
// dateA is older than dateB: dateB gets the lower index.if (dateA < dateB) {return 1; }
// dateA and dateB is the samereturn 0;});
var result = sorted[0].Path;
console.log(result);
复制代码


回调函数 应该 返回-101


  • 返回 -1 表示,在数组元素 ab 中,a 会被排列到 b 之前。

  • 返回 1 表示 b 会被排列到 a 之前。


因此,回调函数把 abName 属性值去掉 .json,将这两个值进行相互比较,较大的值位于数组项的上部位置(即较低的索引)。换句话说,数组项以降序进行排序。


如果你想知道更多有关排序的信息,请参考此页面


现在,让我们将这个代码应用到 Logic App。

内联 JavaScript 代码动作

让我们添加一个内嵌JavaScript代码动作。



然后进入动作的 JavaScript 代码。这几乎等同于上面的例子,但有两个地方有所不同。


"use strict";

// Assign the array value from the output of the previous action, `List Backups`.var items = workflowContext.actions.List_Backups.outputs.body.value;

var sorted = items.sort(function (a, b) { var dateA = a.Name.replace('.json', ''); var dateB = b.Name.replace('.json', '');

if (dateA > dateB) { return -1; }

if (dateA < dateB) { return 1; }

return 0;});

var result = sorted[0].Path;

// Returns the result as output.return result;
复制代码


  • items 变量获取上一个操作——List Backups的输出值作为数组项。

  • 在最后一行,它使用了 return 语句把动作的结果发送到 outputs 值。


如果我们想引用这个动作的结果,这个工作流中的任何之后的动作都可以使用outputs('ACTION_NAME')?['body']

比较

现在,我们只使用这种内联 Javascript 代码动作来解决排序问题。让我们来比较一下相同的结果,请参考上一篇文章与下面的图片。



右侧是我们在上一篇文章中创建的。至少我们 应该 同时使用从备份中选择文件名动作(Select)和获取最新备份动作(Filter)。如果我们希望有一个更优雅的方式,需要在之前和之后有一些额外的动作。


另一方面,如果我们使用内联 JavaScript 代码动作,如左侧所示,我们只需要一个动作。


但有一点需要注意。我们必须有与使用该内联代码动作相关联的集成账户。集成账户的固定价格相当昂贵——US 986.4 (标准) 每月。如果您的组织已经使用集成帐户,那没问题。然而,如果还没有,您 应该 非常小心您的账单。


到目前为止,我们已经了解如何使用内嵌 JavaScript 代码动作在 Logic App 工作流内排序数组项。它功能强大,但价格昂贵。因此,只有当您的组织能够负担成本时,再使用它。


原文链接https://devkimchi.com/2019/11/14/getting-the-latest-array-item-with-inline-script-in-logic-app/


2020-03-30 19:142479

评论

发布
暂无评论
发现更多内容

恋物志(一):网红带货,宠主追捧,2021年宠物智能硬件会火吗?

脑极体

产品训练营 12 课:PRD需求文档

三笠

产品训练营

区块链培训哪家专业,引领区块链技术创新

CECBC

区块链

呀,又是一个谣言「Day 12」

道伟

28天写作

据说很多女性看不懂地图——视觉表象

Justin

心理学 28天写作 游戏设计

死磕归并排序算法

Silently9527

算法 排序算法 快速排序

工作中,我们常用的Oracle内置函数有哪些?

xiezhr

oracle sql sql查询 函数 3月日更

翻译:《实用的Python编程》03_04_Modules

codists

Python

职场中吃力不讨好?从根因上去破解

一笑

28天写作

Kubelet从人门到放弃:拓扑管理(下)

DCOS

Serverless Kubernetes 微服务 云原生 函数计算

(28DW-S8-Day12) 读一份刚发布的《在线学习大数据报告》

mtfelix

大数据 28天写作

不用代码趣讲 ZooKeeper 集群

HelloGitHub

Java zookeeper ZooKeeper原理

git 教程 --git reset命令

生之欢愉,时间同行

git git reset

SRS流媒体服务器源码分析:Rtmp publish流程

赖猫

音视频 服务器 SRS 流媒体开发

线上故障后的第一要务

鱼天翱

线上故障 问责

试用期没过,因在公司上了1024网站...

程序猿石头

程序员 网络安全 信息安全 个人隐私

c#包含日志输出的项目搭建

happlyfox

C# 日志 28天写作 3月日更

用三个分析看,AI会是百度智能云的好“捕手”吗?

ToB行业头条

百度 #百度智能云#

||运算你真的了解吗?

叫练

运算符 java基础

靠速度说话!你还不够了解的“新基建闪电侠”

脑极体

Spark支持自定义Python环境

walker12138

Docker spark k8s Jupyter Notebook

互联网信贷风险与大数据 个人信贷业务互联网化

张老蔫

28天写作

LeetCode题解:190. 颠倒二进制位,使用遮罩,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

KMP的小记录

Geek_02fd98

KMP

为什么你停滞不前

ES_her0

28天写作 3月日更

Synchronized升级成重量级锁之后就下不来了?你错了!

yes

Java JVM

【笔记】第六周-第1课

Geek_娴子

架构学习2021年03月03日(002)

张小胖

基于pandas

rainbow

备战金三银四必看:2021最新版Java春招手册(五大面试专栏)

比伯

Java 编程 架构 面试 程序人生

Mybatis系列全解(八):Mybatis的9大动态SQL标签你知道几个?提前致女神!

潘大壮

Java 后端 mybatis 后台 mybatis源码

在Logic App中使用内联脚本获取最新的数组项_文化 & 方法_Azure 中文精选_InfoQ精选文章