2017-08-07 2 views
0

J'essaie de stocker et de récupérer une matrice dans un objet contexte (ou flux) de nœud rouge.Comment stocker une matrice dans un contexte de nœud rouge

Je le fais pour stocker, peut voir le message de sortie avec tableau:

var acstate=[]; 
for(var i=0;i<15;i++){ 
    acstate[i]=1; 
    } 
context.set("acstate",acstate); 
msg={'payload':acstate}; 
return msg; 

Ce nœud pour obtenir ensemble à partir du contexte:

var acstate=[]; 
acstate = context.get('acstate'); 
for(var i=0;i<15;i++){ 
    node.warn(acstate[i]); 
    } 
msg={'payload':acstate}; 
return msg; 

Il montre

"TypeError: Cannot read property '0' of undefined" 

Can » t trouver des informations sur le stockage des tableaux, est-ce possible avec le contexte? Si non, que puis-je utiliser pour conserver les données?

Merci!

+0

Est-il possible que le noeud lisant le tableau à partir du contexte puisse être déclenché avant celui qui l'écrit dans le contexte? Si c'est le cas, vous devez ajouter un test pour voir si le 'context.get()' retourne 'undefined' (comme il le fera s'il n'a pas encore été défini) – hardillb

+0

Au lieu de supposer qu'il y a 15 éléments, utilisez acstate.length – SPlatten

+0

Désolé, je n'a pas mentionné que j'essaye d'écrire au contexte et de lire du contexte de différents noeuds. Alors maintenant j'ai essayé de changer de "contexte" pour "couler" et ça marche! Merci pour les réponses! –

Répondre

0

Vous pouvez écrire comme

var acstate=[]; 
var temp = context.get('acstate'); 

for(var x=0;x<temp.length;x++){ 
    acstate.push(temp[x]); 
    } 

for(var i=0;i<15;i++){ 
    node.warn(acstate[i]); 
    } 
msg={'payload':acstate}; 
return msg; 
0

Vous n'avez pas besoin de créer le tableau avant de l'assigner au retour d'une autre fonction:

var acstate; /* =[] NOT REQUIRED; */ 
    acstate = context.get('acstate'); 

    if (typeof acstate == "object" 
    && typeof acstate.length == "number" 
    && acstate.length > 0) { 
     for(var i=0;i<acstate.length; i++){ 
      node.warn(acstate[i]); 
     } 
    } 
    msg={'payload':acstate}; 
    return msg; 
0

Désolé, je ne l'ai pas mentionné que je J'essaie d'écrire en contexte et de lire du contexte à partir de différents nœuds. On dirait que chaque nœud a son propre contexte, c'est pourquoi les données stockées dans le contexte d'un nœud ne sont pas disponibles dans le contexte d'un autre nœud. Alors maintenant j'ai essayé de changer de "contexte" pour "couler" et ça marche!

var temp = flow.get('acstate'); 

Merci pour les réponses!