首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Firebase.update失败:第一个参数包含未定义的属性

Firebase.update失败:第一个参数包含未定义的属性
EN

Stack Overflow用户
提问于 2016-01-11 01:31:06
回答 3查看 60.5K关注 0票数 48

我有一个简单的Firebase函数,可以更新一些数据。然而,解释器说第一个参数在属性'users.tester1‘中包含"undefined“。有人能帮帮我吗?

代码语言:javascript
复制
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.");
  }
};
EN

回答 3

Stack Overflow用户

发布于 2018-03-06 10:55:51

为了确保你的对象不包含任何未定义的道具,使用这个简单的技巧:

代码语言:javascript
复制
JSON.parse( JSON.stringify(YourJsonData ) )

有关更多信息,请查看此codePen:http://codepen.io/ajmueller/pen/gLaBLX

票数 28
EN

Stack Overflow用户

发布于 2020-12-16 02:55:20

当您尝试使用未定义的值更新特性时,基础Firebase库将引发错误。它将允许null (并将基本上忽略它们)。

您将需要您的原始转换器来确保它忽略所有原型方法和属性,并将未定义的转换为null或删除所有具有未定义的值的属性。

代码语言:javascript
复制
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 || null,
      "edges" : "filler" || null
    });
    refs.users.child(name).child("edges").update({
      "to" : "filler" || null,
      "from" : "filler" || null
    });

    addNode(new Node(name, time, name));
票数 1
EN

Stack Overflow用户

发布于 2017-09-03 05:16:52

如上所述,如果您希望在FireBase值中将所有undefined值保存为空值,则需要将它们设置为null

我采用这种方法来更正所有嵌套值。

代码语言:javascript
复制
  //to search and replace    
    const replaceAll  =(s="",f="",r="")=>  s.replace(new RegExp(f.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), r)

    //to save 
   firebase.database().ref(`path`).update(JSON.parse(replaceAll(JSON.stringify(val),"undefined","null")))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34708566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档