Javascript Firebase更新只是一个父节点
这是一个小问题,如果需要的话,我会重写所有的内容,但我想把工作留给自己 我有一个类似于Javascript Firebase更新只是一个父节点,javascript,json,firebase,firebase-realtime-database,Javascript,Json,Firebase,Firebase Realtime Database,这是一个小问题,如果需要的话,我会重写所有的内容,但我想把工作留给自己 我有一个类似于users/usernames/的结构。我查阅了Firebase文档,但在“紧凑”树中找不到如何更新的示例 现在,如果我想更改,您可以看到问题所在 this.database.ref('users/usernames/' + this.UN).update({ username: newUsernameVariable }) 我必须重新构造一个不可更改的值,并执行类似于users/usernames//u
users/usernames/
的结构。我查阅了Firebase文档,但在“紧凑”树中找不到如何更新的示例
现在,如果我想更改
,您可以看到问题所在
this.database.ref('users/usernames/' + this.UN).update({
username: newUsernameVariable
})
我必须重新构造一个不可更改的值,并执行类似于users/usernames//username/
的操作,但是
uids//usernames/
的树,因此这将是额外的冗余this.database.ref('users/usernames').update({
this.UN: newUsernameVariable
})
这与我想要的非常接近,但不幸的是,这不是有效的JSON。左侧未转换为字符串。我试过这么做
var UNJSON = JSON.stringify(this.UN);
this.database.ref('users/usernames/').update({
UNJSON: newUsername
});
但这不起作用,只是把养恤基金当作一个词
编辑:
我把它改成了
var updates = {};
updates[this.UN] = newUsername;
this.database.ref('users/usernames').update(updates);
它几乎可以工作,但是现在子节点被替换了
我改变了这个标题的问题,因为本质上我已经达到了这样的程度:我有了类似于users/usernames/myawesomeusername/{manychildren}
的东西,我想在编辑myawesomeusername时保留孩子们
编辑2:this.UN在onAuthStateChanged中填充,并在点击更新代码时更改。下面是这个.UN的设置
// UN is a global read/write username string that persists throughout the session.
// SETTING THE VALUE OF this.UN WITH UID
if(this.UN == undefined) {
console.log('this.UN was null. Fetch the real one with UID from the database');
this.database.ref('uids/' + user.uid).once('value', function(snapshot){
this.UN = snapshot.val().username;
console.log('Grabbed from snapshot.username');
if(this.UN == undefined) {
console.log('Impossible error');
}
}.bind(this)).catch(function(err){
console.log('Error obtaining userID from database', err);
this.UN = user.displayName || "User" + user.uid;
}.bind(this));
} else {
console.log(this.UN);
}
我使用
this.UN
来处理我需要应用程序其余部分的用户名的任何时候。this.UN的值是多少?@FrankvanPuffelen更新了一个解释,谢谢!您能否将问题简化为this.UN
的硬编码值,而不是整个流程?@FrankvanPuffelen Hm的硬编码值是否表示要用字符串文字替换this.UN
?这会起作用,但是this.UN
需要根据登录的用户进行更改。this.UN的值是多少?@FrankvanPuffelen更新了一个解释,谢谢!您能否将问题简化为this.UN
的硬编码值,而不是整个流程?@FrankvanPuffelen Hm的硬编码值是否表示要用字符串文字替换this.UN
?这会起作用,但此.UN需要根据登录的用户进行更改。