I wanted to check all the global variables in order to delete those older than X minutes.
I wrote the test code but unfortunately global.keys() allways returned an empty value, despite the considerable amount or defined ram global variables. Here is my code:
var lapsecs;
var cur;
var w;
node.warn(global.keys());
global.keys().forEach(key => {
cur = global.get(key);
lapsecs = (Date.getTime() - cur.last_seen);
if (lapsecs>10){
w = key + ' ' + lapsecs.toString();
node.warn(w);
}
});
I was so frustrated that I asked to chatGPT to generate the code in such a way:
Give me the code for a function-type node in Node-RED that checks global variables and sees if the “last_seen” attribute is older than 10 seconds than the current time.
I got the following
var now = Date.now(); // otteniamo il tempo attuale in millisecondi
// controlla ogni variabile globale
for (var globalVar in global) {
// verifica se l'attributo "last_seen" esiste nella variabile globale e se è stato visto più di 10 secondi fa
if (global.hasOwnProperty(globalVar) && global[globalVar].hasOwnProperty("last_seen") && (now - global[globalVar].last_seen > 10000)) {
// esegui un'azione (ad esempio, stampa un messaggio di avviso nella console di Node-RED)
console.log("La variabile globale '" + globalVar + "' non è stata vista da più di 10 secondi!");
}
}
// restituisci null perché non vogliamo emettere alcun output
return null;
Despite the use of an edge AI tool I got back the same wrong(?) result. So, probably , I’m not more stupid than an AI bot…
I changed the node-red settings.js file in order to allow the global variables to be exposed by global.keys() function.
What can I do to access all the global variables?