我有一个简单的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.");
}
};
发布于 2018-03-06 10:55:51
为了确保你的对象不包含任何未定义的道具,使用这个简单的技巧:
JSON.parse( JSON.stringify(YourJsonData ) )
有关更多信息,请查看此codePen:http://codepen.io/ajmueller/pen/gLaBLX
发布于 2020-12-16 02:55:20
当您尝试使用未定义的值更新特性时,基础Firebase库将引发错误。它将允许null (并将基本上忽略它们)。
您将需要您的原始转换器来确保它忽略所有原型方法和属性,并将未定义的转换为null或删除所有具有未定义的值的属性。
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));
发布于 2017-09-03 05:16:52
如上所述,如果您希望在FireBase值中将所有undefined
值保存为空值,则需要将它们设置为null
。
我采用这种方法来更正所有嵌套值。
//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")))
https://stackoverflow.com/questions/34708566
复制相似问题