我有一个简单的Firebase功能,可以更新一些数据.但是,解释器说第一个参数在属性"users.tester1"中包含"undefined".有人可以帮帮我吗?
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."); } };
Frank van Pu.. 41
将对象传递给Firebase时,属性的值可以是值或null(在这种情况下,属性将被删除).他们不能undefined
,这是你根据错误传递的.
只需单独运行此代码段即可显示问题:
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")
结果是:
{name:undefined,filler:undefined}
我最好的选择是你希望将键/值对传递objify
为偶数/奇数参数.在这种情况下,您要将功能更改为:
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")
结果是:
{name:"填充"}
小智.. 18
要确保您的对象不包含任何未定义的道具,请使用以下简单方法:
JSON.parse( JSON.stringify(YourJsonData ) )
有关更多信息,请查看此代码:http://codepen.io/ajmueller/pen/gLaBLX
将对象传递给Firebase时,属性的值可以是值或null(在这种情况下,属性将被删除).他们不能undefined
,这是你根据错误传递的.
只需单独运行此代码段即可显示问题:
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")
结果是:
{name:undefined,filler:undefined}
我最好的选择是你希望将键/值对传递objify
为偶数/奇数参数.在这种情况下,您要将功能更改为:
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")
结果是:
{name:"填充"}
要确保您的对象不包含任何未定义的道具,请使用以下简单方法:
JSON.parse( JSON.stringify(YourJsonData ) )
有关更多信息,请查看此代码:http://codepen.io/ajmueller/pen/gLaBLX