Firebase.update失败:第一个参数包含未定义的属性 [英] Firebase.update failed : first argument contains undefined in property

查看:173
本文介绍了Firebase.update失败:第一个参数包含未定义的属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆