【NodeRed】常用节点记录(loop、PostgreSQL、子流程、日志)

【NodeRed】常用节点记录(loop、PostgreSQL、子流程、日志)

  • 前言
  • loop
  • PostgreSQL
    • number of rows per message
    • sql 几种写法
      • SQL query template
      • Dynamic SQL queries
      • Parameterized queries
  • 子流程
    • 状态节点怎么用?
  • 日志


前言

在看了公司nodeRed 系统的设计,对涉及到的以下节点使用比较陌生,为了方便后续自己在编写过程中流畅性,对这些节点进行研究和示例编写消化,并在此进行记录,方便后续查阅。

  • loop (测试使用)、
  • PostgreSQL(测试几种sql、number of rows per message)、
  • 子流程(测试status)、
  • 日志(测试输出了什么)

loop

loop 在官方的介绍是:

Repeats a task in the loop specified times or by a condition or by an iterable enumeration (Array, Typed Array, Object, Map, Set, String).

简单的说,就是一个for。为了方便进一步了解它的使用,直接导入官方示例 Fixed number of loops,在这个基础上展开二次编写与测试。

经过测试,它的第一个输出就是for的最后一次,第二个输出则是整个迭代过程。2个输出都存在2个字典 :payload 和 loop ,这个在帮助文档有解释。其中,2个输出的payload 具体输出什么内容,可以在loop 节点 enumeration 选项 进行设置(或者fixed count 选项进行设置)。
在这里插入图片描述
fixed count 选项中设置解释如下:

  • Pass Count 表示 迭代次数;
  • Initial Value 表示起始值设定(注意,设定的不是for索引,索引依旧是从0开始);
  • Step Value 表示起始值设定的步长
    在这里插入图片描述
    这个其实就是
int value=1;
for(int i=0;i<10;i++){value +=2;
}

PostgreSQL

number of rows per message

在帮助文档有这么一句话:An exception is if the Split results option is enabled and the Number of rows per message is set to 1, then msg.payload is not an array but the single-row response. 翻译过来就是:例外情况是,如果启用了“拆分结果”选项,并且每条消息的行数设置为1,则msg.payload不是数组,而是单行响应。

最初看Number of rows per message 字面意思,就是用来控制输出sql 语句数量的,在进行了尝试后,再看这句话发现根本不是这个意思,大错特错,咋理解能力这么差。它是用来控制输出数据的,但前提必须是,Split results in multiple messages勾选,否则不起作用。

通过编写一句简单的sql 语句SELECT a FROM test LIMIT 10;

  • 在不勾选Split results in multiple messages的情况下,最后msg.payload输出是一个10个元素的数组
    在这里插入图片描述
  • 在勾选Split results in multiple messages,设置Number of rows per message为6的情况下,最后msg.payload输出是一个6个元素的数组,但要注意,勾选了Split results in multiple messages,msg.pgsql 就没有输出结果了
    在这里插入图片描述

再回到关于帮助文档那句话的理解,其实是,在勾选Split results in multiple messages时,当设置Number of rows per message为1,此时输出就只有1个元素,但不是数组,而是字典
在这里插入图片描述

sql 几种写法

SQL query template

  1. 变量为整型,不用双引号
SELECT a FROM test LIMIT {{{ msg.id }}};
  • msg.id 作为变量传值
  1. 变量为字符串
SELECT id, employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id
FROM public.testseq
WHERE id='{{{ msg.id }}}';
  • msg.id 作为变量传值,得用引号

Dynamic SQL queries

msg.query形式注入,里面写sql 语句,然后再pg模块中不用写Query。
在这里插入图片描述

Parameterized queries

变量在函数中 以数组形式有序传到msg.params,然后通过$1 、$2 、… 去获取

//函数模块中写
msg.params = [ 12,11 ];
return msg;
//pg 模块中sql 编写
SELECT id, employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id
FROM public.testseq
where employee_id= $1 and manager_id =$2;

nodeRed 模块这样的配置对应的sql 就是

SELECT id, employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id
FROM public.testseq
where employee_id= 12 and manager_id =11;

子流程

子流程的创建跟流程创建类似,只是多了输入和输出选项,这个网上资源很多,可以参考大神博文Node-Red 学习笔记2-通过创建子流程来实现模块复用,而我主要记录的是,是针对其中状态节点的使用,经过了各种测试,目前依旧还未发现它的使用,网上对它的介绍,也只是记录实例的状态,没有再进一步的使用说明。所以,这个状态节点到底是什么,怎么用?

状态节点怎么用?

经过大神的讲解,该节点主要用于显示实例状态,如果设置了,会将对应的payload 输出到子流程下
在这里插入图片描述
就是下面的good,这个是因为子流程中payload 设值为good,可以根据需要定义。类似qdebug 的节点状态 自动显示。

日志

除了debug 节点,想实现输出日志并保存功能的节点是没有的,因此日志节点需要创建子流程并保存。日志功能的子流程创建如下:
在这里插入图片描述
主要包括 定义输出txt 文件名 + 写入信息 2部分,为了方便区分,可以左上角点击 编辑属性,在外观选项中,自定义类别、颜色、图标等。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/262752.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机Ubuntu系统上安装Pycharm(详细图文教程)

这里写目录标题 一、安装包下载二、安装Pycharm三、启动并配置Pycharm3.1 启动3.2 创建桌面快捷键3.2.1 打开工程后添加桌面快捷键 3.3 安装汉化包 四、创建新的工程项目五、总结 一、安装包下载 Pycharm的官网地址&#xff1a;Pycharm官网 打开官网后的样子如下&#xff1a;…

零基础备考PMP,需要多长时间?

PMP是一门专业性很强的项目管理知识&#xff0c;考试当然是有一定的难度&#xff0c;但是也没有难到让你怀疑人生的程度。 如果你在学习PMP之前&#xff0c;已经有一些经验&#xff0c;那么备考一个半月基本上是没多大问题的&#xff0c;如果你是零基础小白&#xff0c;那么备…

CSP-J 2023 复赛第4题:旅游巴士

【题目来源】https://www.luogu.com.cn/problem/P9751https://www.acwing.com/problem/content/description/5313/【题目描述】 小 Z 打算在国庆假期期间搭乘旅游巴士去一处他向往已久的景点旅游。 旅游景点的地图共有 n 处地点&#xff0c;在这些地点之间连有 m 条道路。 其中…

Linux设备模型(二) - kset/kobj/ktype APIs

一&#xff0c;kobject_init_and_add 1&#xff0c;kobject_init_and_add实现 /** * kobject_init_and_add() - Initialize a kobject structure and add it to * the kobject hierarchy. * kobj: pointer to the kobject to initialize * ktype: p…

【风格迁移】CAST:对比学习,从图像特征而非其二阶统计量(Gram矩阵)中学习风格

CAST&#xff1a;对比学习&#xff0c;从图像特征而非其二阶统计量&#xff08;Gram矩阵&#xff09;中学习风格 提出背景5 why 分析5 so分析 CAST 框架多层风格投影器领域增强模块生成网络 效果对比 StyleGAN 提出背景 论文&#xff1a;https://arxiv.org/pdf/2205.09542.pdf…

初始化(挂载)Linux数据盘(小于2TB)

本文中的操作系统以Linux CentOS 7.5 64位操作系统为例&#xff0c;采用fdisk分区工具为数据盘设置分区。 前提条件 已成功挂载云硬盘。 创建磁盘分区 如果数据盘对外呈现为一个磁盘&#xff0c;不需要分区&#xff0c;可以跳过此步骤。 1.登录Linux实例。 2.运行如下命令&…

QT中的多线程有什么作用?

概述 在学习QT线程的时候我们首先要知道的是QT的主线程&#xff0c;也叫GUI线程&#xff0c;意如其名&#xff0c;也就是我们程序的最主要的一个线程&#xff0c;主要负责初始化界面并监听事件循环&#xff0c;并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上…

【Docker实操】部署php项目

概述 最终达成的容器部署结构和原理如下图&#xff1a; 一、获取nginx、php官方镜像 docker pull nginx //拉取nginx官方镜像 docker pull php:7.4-fpm //拉取php官方镜像需要获取其他可用的php版本&#xff0c;可以上【docker hub】搜索【php】&#xff0c;所有的【xxx-fp…

VSCODE使用Django 页面和渲染

https://code.visualstudio.com/docs/python/tutorial-django#_use-a-template-to-render-a-page 通过模板渲染页面 文件 实现步骤 1&#xff0c; 修改代码&#xff0c;hello的App名字增加到installed_apps表中。 2&#xff0c; hello子目录下&#xff0c;创建 .\templates\…

「C语言进阶1」动态内存分配

目录 一、动态内存分配是什么&#xff1f; 二、为什么需要动态内存分配&#xff1f; 三、怎么进行动态内存分配&#xff1f; 1. malloc 2. calloc 3. realloc a. realloc功能解析 b. 内存泄漏和内存块被截断问题 c. 总结 4. free 四、使用动态内存分配常见的问题 【面试题】 一…

Jenkins的使用GIT(4)

Jenkins的使用GIT 20211002 我们使用 Jenkins 集成外部 Git 仓库&#xff0c;实现对真实代码的拉取和构建。在这里&#xff0c;我们选用 Coding/Github/Gitee 等都可以作为我们的代码源 1 生成公钥私钥 首先&#xff0c;我们先来配置公钥和私钥。这是 Jenkins 访问 Git 私有库…

C#,计算几何,计算机图形学(Computer Graphics)洪水填充算法(Flood Fill Algorithm)与源代码

1 泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法(Flood Fill Algorithm) &#xff0c;又称洪水填充算法&#xff0c;是在很多图形绘制软件中常用的填充算法&#xff0c;最熟悉不过就是 windows 自带画图软件的油漆桶功能。 2 源程序 using System; using System.Collecti…

10. Linux系统中wifi适配器找不到的解决方案

1. 说明 在linux系统中开启一个热点&#xff0c;一般有两种方式。一种使用create_ap在命令行中进行创建&#xff0c;另一种就是在系统自带的操作界面中手动开启。当手动开启热点时&#xff0c;有时会遇到wifi适配器找不到的问题&#xff0c;本博客记录一种可解决此问题的参考方…

高速稳定、网络隔离,解析“向日葵控控”远控方案在医疗行业应用

在医疗大健康领域&#xff0c;依托高速发展的信息化技术加速布局智能化&#xff0c;通过远程手段提高医疗服务质量、促进医疗资源共享、提升医疗工作效率&#xff0c;已成为医院和各类社区诊所等提供关键医疗服务部门近年来的发展目标之一。 同时&#xff0c;根据医疗领域的特殊…

测试开源C#人脸识别模块DlibDotNet

百度“C# 换脸”找到参考文献4&#xff0c;发现其中使用DlibDotNet检测并识别人脸&#xff08;之前主要用的是ViewFaceCore&#xff09;&#xff0c;DlibDotNet是Dlib的.net封装版本&#xff0c;后者为开源C工具包&#xff0c;支持机器学习算法、图像处理等算法以支撑各类高级应…

如何系统地自学 Python?

目录 Python 数据类型 控制结构 函数和模块 文件操作 异常处理 类和对象 列表推导式和生成器 匿名函数和高阶函数 面向对象编程 总结 Python Python是一种面向对象、解释型计算机程序设计语言&#xff0c;由Guido van Rossum于1989年发明&#xff0c;第一个公开发行…

SQL库操作

1、创建数据库 概念 创建数据库&#xff1a;根据项目需求创建一个存储数据的仓库 使用create database 数据库名字创建 数据库层面可以指定字符集:charset/character set 数据库层面可以指定校对集:collate 创建数据库会在磁盘指定存放处产生一个文件夹 创建语法 create …

深度学习基础(二)卷积神经网络(CNN)

之前的章节我们初步介绍了深度学习相关基础知识和训练神经网络&#xff1a; 深度学习基础&#xff08;一&#xff09;神经网络基本原理-CSDN博客文章浏览阅读924次&#xff0c;点赞13次&#xff0c;收藏19次。在如今的科技浪潮中&#xff0c;神经网络作为人工智能的核心技术之…

证件照(兼容H5,APP,小程序)

证件照由uniappuyui开发完成&#xff0c;并同时兼容H5、App、微信小程序、支付宝小程序&#xff0c;其他端暂未测试。 先看部分效果图吧具体可以下方复制链接体验demo 首页代码 <template><view class""><view class"uy-m-x-30 uy-m-b-20"…

DTV的LCN功能介绍

文章目录 LCN简介LCN获取LCN Conflict LCN简介 Logical Channel Number&#xff08;LCN&#xff09;是数字电视系统中用于标识和组织频道的逻辑编号。LCN的目的是为了方便用户浏览和选择频道&#xff0c;使得数字电视接收设备能够根据这些逻辑编号对频道进行排序和显示。 LCN…