写点什么

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

评论

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

深入React源码揭开渲染更新流程的面纱

goClient1992

React

从React源码来学hooks是不是更香呢

goClient1992

React

React中常见的TypeScript定义实战

xiaofeng

React

一文搞懂XaaS

俞凡

架构 云原生

恼人的网络时延

agnostic

网络时延

Collections之Arraylist源码解读(四)

知识浅谈

ArrayList 10月月更

【LeetCode】使括号有效的最少添加Java题解

Albert

LeetCode 10月月更

2022前端培训学习过程中需要掌握哪些技术点?

小谷哥

前端培训怎么系统学习开发技术呢?

小谷哥

【Nacos源码之配置管理 二】Nacos中的事件发布与订阅--观察者模式

石臻臻的杂货铺

nacos 10月月更

react源码中的hooks

flyzz177

React

Baklib知识分享|企业文档管理的一些策略

Baklib

React源码解读之任务调度

flyzz177

React

React性能优化的8种方式

xiaofeng

React

深入了解计算机语言

邱学喆

响应式编程 C语言 汇编 对象编程 C++

【SSM】Spring系列——Spring集成MyBatis

胖虎不秃头

spring ssm 10月月更

java开发技术培训应该怎么学习呢

小谷哥

【Nacos源码之配置管理 一】阅读源码第一步,本地启动Nacos

石臻臻的杂货铺

10月月更 nacso

React组件复用的技巧

夏天的味道123

React

几个常见的js手写题,你能写出来几道

helloworld1024fd

JavaScript

react的useState源码分析

flyzz177

React

web前端开发技术培训机构怎么选

小谷哥

Servlet规范中的监听器-Listener

楠羽

Servlet 笔记 10月月更

Python应用之反转字符串

芯动大师

10月月更 反向字符串输出 函数与表达式

【SSM】Spring系列——AOP面向切面编程

胖虎不秃头

spring ssm 10月月更

Java 属性文件乱码问题

HoneyMoose

这可能是你需要的React实战技巧

夏天的味道123

React

同事嫌我改Bug慢,原来是没掌握这些代码Debug技巧

慕枫技术笔记

debug 后端 10月月更

【SSM】SpringMVC系列——SpringMVC概述

胖虎不秃头

spring ssm 10月月更

大数据培训靠谱吗?

小谷哥

手写现代前端框架diff算法-前端面试进阶

helloworld1024fd

JavaScript

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