写点什么

在 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:142417

评论

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

Burp Suite Professional 2024.8 发布下载,新增功能概览

sysin

渗透测试 WEB安全 burp

VMware ESXi 8.0U3 macOS Unlocker 标准版和厂商定制版更新 OEM BIOS 2.7 支持 Windows Server 2025

sysin

esxi OEM BIOS unlocker dell

VMware ESXi 6.7U3u macOS Unlocker 标准版和厂商定制版更新 OEM BIOS 2.7 支持 Windows Server 2025

sysin

esxi 2025 OEM BIOS unlocker

lg-soar:助力开发者腾飞的利器

六哥是全栈

ts Vue 3 脚手架 #java #开源

IAM的“账号委托”:给权限不给账号,这是什么神操作?

芯盾时代

权限管理 iam 统一身份管理平台

苹果电脑YouTube客户端下载:YouTube for mac 免激活版

你的猪会飞吗

Mac软件 mac破解软件下载

VMware ESXi 7.0U3q macOS Unlocker 标准版和厂商定制版更新 OEM BIOS 2.7 支持 Windows Server 2025

sysin

macos esxi 2025 OEM BIOS

使用JavaScript读取手机联系人列表

南城FE

JavaScript 前端

直播GMV破千万,朱时茂在百度优选开启直播主场

极客天地

RAG效果优化:高质量文档解析详解

阿里云大数据AI技术

人工智能 智能搜索 rag 文档解析 智能开放搜索

【Tomcat源码分析】生命周期机制 Lifecycle

派大星

tomcat源码解读

效率跃升16倍!火山引擎ByteHouse助力销售数据平台复杂查询效率大幅提高

字节跳动数据平台

数据库 大数据 Clickhouse 云数仓

鸿蒙跨端实践-ArkTS和CAPI的混合开发实现

京东科技开发者

写 TDengine,赢 AirPods!

TDengine

开源 AI 技术 征文 数据库·

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