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", []);
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.");
}
};
개체를 Firebase로 전달할 때 속성 값은 값이거나 null일 수 있습니다(이 경우 속성이 제거됨).그들은 그럴 수 없습니다.undefined
그것이 당신이 오류에 따라 전달하고 있는 것입니다.
이 스니펫을 단독으로 실행하는 것만으로도 문제가 나타납니다.
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: 정의되지 않음, 채우기: 정의되지 않음}
키/값 쌍을 에 전달하는 것이 가장 좋습니다.objify
짝수/홀수 매개 변수.이 경우 기능을 다음으로 변경할 수 있습니다.
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")
결과:
{name: "filename"}
개체에 정의되지 않은 소품이 없는지 확인하려면 다음과 같은 간단한 방법을 사용합니다.
JSON.parse( JSON.stringify(YourJsonData ) )
자세한 내용은 다음 코드를 참조하십시오.펜: http://codepen.io/ajmueller/pen/gLaBLX
정의되지 않은 값으로 속성을 업데이트하려고 하면 기본 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));
위에서 말한 것처럼, 당신은 모든 것이 필요합니다.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")))
사용했습니다.Object.keys()
방법:
var key1 = Object.keys(firstPaymentsData)[0],
key2 = Object.keys(firstPaymentsData[key1])[0],
uid = firstPaymentsData[key1][key2].uid;
언급URL : https://stackoverflow.com/questions/34708566/firebase-update-failed-first-argument-contains-undefined-in-property
'source' 카테고리의 다른 글
Oracle 매개 변수 및 IN 절 (0) | 2023.06.18 |
---|---|
농담 사용 시 스크립트 오류 입력 (0) | 2023.06.13 |
정확히 파일이란 무엇입니까?플러시는? (0) | 2023.06.13 |
장고 ORM 쿼리에서 SQL ''LIKE''에 해당하는 것은 무엇입니까? (0) | 2023.06.13 |
1 - 10 범위의 난수 생성 (0) | 2023.06.13 |