只需要会SQL语句和JavaScript,就可以实现数据同步服务的功能。msg是一个对象,在一个流程里面的任意一个节点组件里面都能够访问到,举一个例子流程就好像进行中的一场足球比赛,在这场比赛里面,球员可以理解为节点,足球可以理解为msg对象,足球在各个球员之间进行不停地传递,最后足球进入球门,整个流程也就结束,也就是说在整个流程里面msg对象是流动的,共享的。这个node-red服务的核心就是一个流程服务,所有的操作都是串行的方式执行的。不管在哪个节点组件上,msg对象就是一个核心的对象,我们可以给这个msg对象增加自定义对象,方便在以后流程的任意节点里面去使用。

能够理解上述内容,那么基本就已经掌握了node-red的核心思想了,当然了,这是我的个人理解。为了解释这个原理,现在我写一个简单的例子来说明一下。要做点什么呢?举一个例子,我们读取所有的科室表,然后根据科室id去读取患者表的数据,当然这个操作是多余的,我只是为了说明上述原理。

我本地有两张表,科室表和患者表,如图所示

image.png

image.png

这两个表的关联字段就是科室id就是departmentid,由于流程是串行的,现在需要先查询出所有的科室信息,然后,再把科室id取出来,再重新组织成一个SQL语句去查询患者信息。对了,顺便说一下,按照安装方式2搭建的服务,里面已经安装了mysql,SqlServer,Oracle的组件,当然,也可以自己安装。好了,我们需要先创建一个inject组件。如图所示。

image.png

在这个topic里面去输入查询SQL语句,之所以要把SQL语句写在topic字段里面是因为数据库组件的规则必须要这么输入,所以,按照他们的规则做就行了。接下来创建一个数据库组件。

image.png

image.png

连接起来,为了直观看一下效果,先添加一个debug组件,看一下这一步生成的记录。

image.png

现在我点一下左侧的按钮,就可以查看到查询结果了。

image.png

可以看到debug组件显示的就是msg.payload对象的信息,接下来,添加一个函数组件,处理一下这个结果,把科室id过滤出来,然后,组成新的SQL语句。如图所示。

image.png

image.png

然后,再在后面添加一个数据库组件,可以直接复制一下之前的组件就行。如图所示

image.png

最后,添加一个debug组件,查看payload里面是不是患者信息。

image.png

image.png

可以看到已经有患者信息了,那我现在要看科室信息,要怎么办,有三种办法,第一个是再添加debug组件打印departmentList;第二个就是添加函数组件,把他们合并到一起后再连接一个debug组件;第三个就是直接修改debug组件的打印信息,把payload修改成departmentList对象,为了简单起见,这里面我直接修改这个debug组件。如图所示。

image.png

点击保存按钮,最后点击重新部署按钮。

image.png

再调试一下看看结果。

image.png

可以看到打印的结果已经变成科室列表信息了。

总结,流程的每次修改,都要去重新部署一下,否则流程不会生效。

标签: node-red

评论已关闭

辽公网安备21010602000703号 备案号:冀ICP备2022001219号