I have a simple Firebase function that updates some data. However, the interpreter says that the first argument contains "undefined" in property 'users.tester1'. Can somebody help me please?
var objify = function() { var rv = {}; for (var i = 0; i < arguments.length; ++i) rv[arguments[i]] = rv[arguments[i+1]]; return rv; } addUser("tester1", []); var addUser = function(name, edges){ if(!checkIfUsernameExists(name) && !checkIfNodeNameExists(name) && !checkIfEdgeNameExists(name)){ var time = Firebase.ServerValue.TIMESTAMP; //HERE: I think the error is on this line refs.users.update(objify(name, "filler")); refs.users.child(name).set({ "id" : time, "edges" : "filler" }); refs.users.child(name).child("edges").update({ "to" : "filler", "from" : "filler" }); addNode(new Node(name, time, name)); for(var e in edges){ refs.users.child(name).child("edges/to").update(objify(edges[e].name, true)); addEdge(new Edge(edges[e].name, time, edges[e].to, edges[e].arrows)); //TODO add a "from" edge so that you know who wants to eat you } refs.users.child(name).child("edges/to").set({"filler" : null}); } else { alert("user/node/edge name taken."); } };
When you pass an object to Firebase, the values of the properties can be a value or null (in which case the property will be removed). They can not be undefined
, which is what you're passing in according to the error.
Simply running this snippet in isolation shows the problem:
var objify = function() { var rv = {}; for (var i = 0; i < arguments.length; ++i) rv[arguments[i]] = rv[arguments[i+1]]; return rv; } objify("name", "filler")
Results in:
{name: undefined, filler: undefined}
My best bet is that you want to pass key/value pairs into objify
as even/odd parameters. In that case you want to change the function to:
var objify = function() { var rv = {}; for (var i = 0; i < arguments.length; i+=2) rv[arguments[i]] = arguments[i+1]; return rv; } objify("name", "filler")
Results in:
{name: "filler"}
to make sure your object does not contain any undefined props use this simple trick:
JSON.parse( JSON.stringify(YourJsonData ) )
For more info take a look at this codePen: http://codepen.io/ajmueller/pen/gLaBLX
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With