2016-01-26 1 views
0

Je crée une requête SQL dans Node-Red pour générer une charge de données de temps/valeur. Ces données sont ensuite transmises à une page Web pour être affichées dans un graphique.Objet de sortie SQL de noeud rouge/conversion de matrice

Auparavant, j'ai utilisé PHP pour faire la requête SQL, que j'essaie de remplacer. Cependant, les requêtes SQL en php sont livrées dans un format différent.

Avec nœud-Rouge, je reçois:

[ 
    { 
    "Watts": 1018, 
    "Time": 1453825454 
    }, 
    { 
    "Watts": 1018, 
    "Time": 1453825448 
    }, 
    { 
    "Watts": 1010, 
    "Time": 1453825442 
    }] 

Avec PHP, je reçois:

[ 
    [1453819620000,962], 
    [1453819614000,950], 
    [1453819608000,967], 
    [1453819602000,947] 
] 

Je pense que je reçois un tableau de php et un tableau d'objets JSON du noeud -Rouge. Comment convertir l'objet Node-Red en Node-Red dans le même format que PHP? (C'est-à-dire que je veux gérer le traitement sur le serveur plutôt que sur le client.)

+0

Pouvez-vous préciser exactement ce que vous êtes demander ici. Voulez-vous savoir comment convertir le format Node-RED au format PHP? – hardillb

+0

J'ai oublié de dire - c'est ainsi que je peux prendre la sortie de Node-red et la mettre directement dans un graphe de flot. – Fraser73

Répondre

0

Un nœud de fonction peut être utilisé pour générer quelque chose dans le même format.

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

J'ai eu un peu d'aide d'un gars au travail et voici ce qu'il est venu avec, modifié pour le nœud rouge par moi:

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;