首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node-red SQL输出对象/数组转换

Node-red SQL输出对象/数组转换
EN

Stack Overflow用户
提问于 2016-01-27 00:28:35
回答 3查看 2.2K关注 0票数 0

我在Node-Red中执行SQL查询,以输出大量时间/值数据。然后将该数据传递到网页,以便在图形中显示。

之前我已经使用php来执行SQL查询,我正在尝试替换它。但是,php中的SQL查询是以不同的格式提供的。

使用Node-Red,我得到:

代码语言:javascript
复制
[
  {
    "Watts": 1018,
    "Time": 1453825454
  },
  {
    "Watts": 1018,
    "Time": 1453825448
  },
  {
    "Watts": 1010,
    "Time": 1453825442
  }]

使用PHP,我得到:

代码语言:javascript
复制
[
   [1453819620000,962],
   [1453819614000,950],
   [1453819608000,967],
   [1453819602000,947]
]

我想我从php得到了一个数组,从Node-Red得到了一个JSON对象数组。如何将Node-Red对象转换为与PHP格式相同的Node-Red输出?(例如:我希望在服务器而不是客户端处理处理。)

EN

回答 3

Stack Overflow用户

发布于 2016-01-27 03:38:57

功能节点可以用来生成相同格式的内容。

代码语言:javascript
复制
var array = msg.payload;
var phpFormat = "[";

for (var i=0; i<array.length; i++) {
 phpFormat += "[" + 
   // time format differ, NodeJS is in seconds
   // php is in milliseconds
   (array[i].Time * 1000 ) + 
   "," + 
   array[i].Watts + "],";

}

//take the last "," off
phpFormat = phpFormat.substring(0,phpFormat.lenght - 1);
phpFormat += "]";

msg.payload = phpFormat;

return msg;
票数 0
EN

Stack Overflow用户

发布于 2016-01-27 18:07:12

我从一个同事那里得到了一点帮助,这是他的想法,由我修改为node-red:

代码语言:javascript
复制
var outputArray = [];

for(var i in msg.payload){
    var entryData = [msg.payload[i]['Time']];
    for(var attr in msg.payload[i]) {
        if(attr!='Time') {
            entryData.push(msg.payload[i][attr])}
            };
    outputArray.push(entryData); } 

var returnMsg={"payload":outputArray};
return returnMsg;
票数 0
EN

Stack Overflow用户

发布于 2018-03-15 00:17:53

我知道,我知道,这个问题已经问了两年多了。但是,对于下一个寻求类似问题答案的500人,我想强调一下change节点中内置的新的JSONata表达式特性。使用这个简单的表达式:

代码语言:javascript
复制
payload.[Time, Watts]

将JS对象转换为数组数组的请求输出。事实上,我在数组中的许多重复循环已经被一些更简单的(对我来说)这样的表达式所取代。

JSONata site上记录了lambda语法计算器的魔力。在那里,您还可以找到online exerciser,您可以在其中针对自己的数据构建表达式,并立即看到结果结构。

注意:为了在更改节点中使用jsonata表达式,请确保选择输入字段旁边的J:下拉菜单(而不是{} JSON选项)……两件完全不同的事情!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35018807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档