Hi, I cant get my if fuction node to work
I have a msg.payload.medel and a msg.payload.aktuellt from two different nodes.
If msg.payload.aktuellt is higher than msg.payload.medel i want to send "false", else true
You will need to join the 2 before you can compare
See this article in the cookbook for an example of how to join messages into one object.
I have joind them into an array, output when I have 2 inputs.
Then made this function node:
const a = msg.payload.medel;
const b = msg.payload.aktuellt;
if(b => a){
msg.payload === true ;}
else if(b < a){
msg.payload === false ;}
return msg;
Changed it, but doesn't get any output :
const a = msg.payload.medel;
const b = msg.payload.aktuellt;
if(b => a) msg.payload === "true" ;
else if(b < a) msg.payload === "false" ;
return msg;
First look at what you are getting out of the join node. If you followed the example linked then it should not be an array.
if(b => a) msg.payload === "true" ;
you are using === (a comparison)
you should be using = .
I cant´t make it work with topic. Not to good on the function node
Could someone help me with the function node?
Show us the value going into the function node. (Use a debug node before the function)
It's 2 different values
I want to send true if the msg.payload.aktuellt is the same or greater than the msg.payload.medel
2020-10-11 12:07:57node: 732ef24.f9e090cmsg.payload : Object
object
medel: 0.266
2020-10-11 12:07:57node: ae9c7c89.7bfefmsg.payload : Object
object
aktuellt:
I set a topic on each node to "medel" and "aktuellt"
Joined them in a Join node, but them I'm lost
I want the output from the function to be true or false
This should probably be:
if(b >= a)
Node.js console tells you why:
> b = 2
2
> b >= 2
true
> b => 2
[Function (anonymous)]
> if (b => 10) console.log('oops');
oops
You can do similar quick experiments in a JavaScript console (REPL) by opening your browser development tools window and typing in.
I suggest doing that to get a better hang of the syntax to avoid having to bang your head on the wall trying to figure out why your function isn't working.
Also if you want it to be an actual true
or false
(a boolean value), you should set
msg.payload = true; // or false
// instead of a string value
msg.payload = "true" // or "false"
This can become an issue as:
msg.payload = "false";
if (msg.payload) {
// this code will execute as any non-empty
// string value is "truthy"
}
Yeah, I did that. Everything seems to be working now, thanks !!
This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.