gpt4 book ai didi

javascript - 在删除最后一个左子节点时,我各自的 firebase 表被删除

转载 作者:行者123 更新时间:2023-11-30 20:55:43 25 4
gpt4 key购买 nike

我有一个场景,我有 firebase json db,其中我有一个代理的 json 对象。在这里,如果我删除最后一个左边的子节点,那么表(节点)代理也会被删除。

即使我删除了留在其中的最后一个子节点,我如何限制此代理(父节点)不被删除,或者,如何在删除最后一个节点后重新创建父节点(代理)子节点?

下面是我通过代码做的事情:

    FriendlyChat.prototype.signOut = function () {

var userdetails = this.auth.currentUser;

this.database.ref('agents').child(userdetails.displayName).remove();

this.auth.signOut();
};

FriendlyChat.prototype.onAuthStateChanged = function (user) {

if (user) { // User is signed in!
// Get profile pic and user's name from the Firebase user object.
//console.log(user);
var profilePicUrl = user.photoURL;
var userEmail = user.email;
var userName = user.displayName;
this.agentsRef = this.database.ref('agents');
var loginTime = Math.floor(new Date().getTime() / 1000);


this.agentsRef.child(userName).set({
emailId: userEmail,
login_time: loginTime,
name: userName
})

} else { // User is signed out!
// Hide user's profile and sign-out button.
// Something happens

}
};

Firebase 数据库:

{
"agents" : {
"test test" : {
"emailId" : "testrbcdemo@gmail.com",
"login_time" : 7686887,
"name" : "test test"
}
},
"engagedUsers" : {
"qwe" : {
"agent_availability" : true,
"conv_id" : "testrbcdemo_qwe",
"emailId" : "qwe@gmail.com",
"login_time" : 66565656,
"name" : "qwe",
"uid" : "adasfklsfjdskldgsgjgjkl"
}
},
}

最佳答案

这是 Firebase 的正常行为,因为它是一个基于节点的系统。添加新子项时会重新生成该表。 Firebase 这样做的原因是为了避免空表(节点)。

Firebase 的工作方式是检查节点是否已经存在,如果不存在则重新创建它。如果存在,则添加一个键值对作为该节点的子节点。这意味着无论您有多少节点,最终您都需要以键值对结束。

例如:

 - Customer
- Address
- AddressLine1: The Hive
- AddressLine2: Southampton Ave
- AddressLine3: New York
- Country: USA

在上面的示例中,地址节点包含分成 4 个子节点的数据。如果我删除 AddressLine1、AddressLine2、AddressLine3 和 Country,Address 节点会自动删除,因为它没有子节点。

向该客户添加新地址后,将重新创建地址节点。

关于javascript - 在删除最后一个左子节点时,我各自的 firebase 表被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47689788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com