Firebase.update失败:第一个参数包含未定义的属性 [英] Firebase.update failed : first argument contains undefined in property
问题描述
我有一个简单的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,[]);
$ b $ var addUser = function(name,edges){
if(!checkIfUsernameExists(name)&&!checkIfNodeNameExists(name)&&!checkIfEdgeNameExists(name)){
var time = Firebase.ServerValue.TIMESTAMP;
//这里:我认为错误是在这一行
refs.users.update(objify(name,filler));
$ b refs.users.child(name).set({
id:time,
edges:filler
});
refs.users.child(name).child(edges)。update({
to:filler,
from:filler
});
$ b $ addNode(新节点(名称,时间,名称));
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添加一个from边缘,以便知道谁想吃你
refs.users.child(name).child(edges / to)。 ({filler:null});
} else {
alert(user / node / edge name taken。);
}
};
当您将对象传递给Firebase时,属性可以是一个值或null(在这种情况下,属性将被删除)。它们不能是 undefined
,这就是你根据错误传入的内容。
隔离片段显示了这个问题:
pre $ c $ var 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
。在这种情况下,你想把函数改成:
$ p $ var c 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:filler}
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"}
这篇关于Firebase.update失败:第一个参数包含未定义的属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!