J'ai une simple fonction Firebase qui met à jour certaines données. Cependant, l'interprète dit que le premier argument contient "indéfini" dans la propriété "users.tester1". quelqu'un peut m'aider s'il vous plait?
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.");
}
};
Lorsque vous transmettez un objet à Firebase, les valeurs des propriétés peuvent être une valeur ou null (auquel cas la propriété sera supprimée). Ils ne peuvent pas être undefined
, c'est ce que vous transmettez en fonction de l'erreur.
Exécuter simplement cet extrait isolément montre le problème:
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")
Résulte en:
{nom: non défini, remplisseur: non défini}
Mon meilleur pari est que vous voulez passer des paires clé/valeur dans objify
en tant que paramètres pairs/impairs. Dans ce cas, vous souhaitez modifier la fonction pour:
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")
Résulte en:
{nom: "remplisseur"}
pour vous assurer que votre objet ne contient aucun accessoire indéfini, utilisez cette astuce simple:
JSON.parse( JSON.stringify(YourJsonData ) )
Pour plus d’informations, jetez un oeil à ce code code: http://codepen.io/ajmueller/pen/gLaBLX