Community Tip - You can subscribe to a forum, label or individual post and receive email notifications when someone posts a new topic or reply. Learn more! X
I have the following code with which i never assign the variable back to the property however my property on the "Thing" changes to match the service result. Does anyone know why this is happening?
var original=Things["Thing"].Property; var variable=original; var newField = new Object(); newField.name = "Setpoint"; newField.baseType = 'STRING'; variable.AddField(newField); for (var i=0;i<variable.rows.length;i++){ variable.rows[i].Setpoint=/*somevalue*/; } var result=variable;
Solved! Go to Solution.
Doing that:
var original=Things["Thing"].Property;
or that:
var variable=original;
you don't clone Property contents, you get a reference to it, that's why property it's changing, if you want to work with a cloned copy:
var variable = Resources["InfotableFunctions"].Clone({ t1: original });
Doing that:
var original=Things["Thing"].Property;
or that:
var variable=original;
you don't clone Property contents, you get a reference to it, that's why property it's changing, if you want to work with a cloned copy:
var variable = Resources["InfotableFunctions"].Clone({ t1: original });
Hi Carles,
That makes sense as far as cloning goes. What troubles me is that operations on a variable in my service only impact infotable type properties. For example, if I use a number property as a reference and then proceed to multiply the variable by 20, in my service, the corresponding property value is not multiplied by 20 unless I assign the variable value to the property.
Infotable properties indeed are treated a bit different as well as XML and JSON properties.
This is also why you have to specifically write back the full table to update the property if persisted.
Fair enough. Thanks Pai and Carles!