如何在 firebase 中传递自己的唯一密钥并在不破坏结构的情况下更新它?
How to pass own unique key in firebase and update it as well without destroying the structure?
我目前正在尝试制作一个脚本,我将自己在 firebase 中的唯一键作为主键传递。它需要像这样工作
StudentData
-Student Unique id
- referadID : "active",
- referadID2 : "inactive",
- referadID3 : "active",
-Student Unique id2
-referadIDnew : "active",
这里每个学生都推荐另一个学生,一旦被推荐的学生加入,被推荐的加入的学生就有他自己的唯一 ID,它存储活跃或不活跃的值。这里的问题是,如果我使用 push 它将生成一个我不想要的唯一 id,因为它会使使用排序时难以工作。我不想这样做。如何在 studentUniqueid2 中创建自己的唯一键。我尝试使用事务而不是推送,但问题是事务而不是添加另一个键值对只会更新整个键,只在 table 中留下我不想要的最新学生唯一 ID。这是我的代码
let createData=adminDatabase.ref('/ReferralSystem/joinedtransactionlog');
createData.transaction(function(currentData){
if(currentData !== InviterId){
return {
[InviterId]: {
[member.id] : "active"
}
}
}else{
console.log("curretn data exists");
}
});
我正在使用 javascript 并使用 Admin 平台在 firebase 实时数据库系统上工作。
如果我没理解错的话,你有两个 UID:一个给邀请者,另一个给 invitee/member。在这种情况下,您可以在问题中编写结构:
createData.child(inviterUID).child(memberUID).set("active");
通过简单的 set
操作执行此操作将比您尝试的事务更好地扩展,因为您在整个 StudentData
节点上创建争用,而这仅执行幂等写入。
如果数据已经存在,则无需阻止写入数据,因为操作是幂等的:后续写入不会改变第一次写入的结果。
我目前正在尝试制作一个脚本,我将自己在 firebase 中的唯一键作为主键传递。它需要像这样工作
StudentData
-Student Unique id
- referadID : "active",
- referadID2 : "inactive",
- referadID3 : "active",
-Student Unique id2
-referadIDnew : "active",
这里每个学生都推荐另一个学生,一旦被推荐的学生加入,被推荐的加入的学生就有他自己的唯一 ID,它存储活跃或不活跃的值。这里的问题是,如果我使用 push 它将生成一个我不想要的唯一 id,因为它会使使用排序时难以工作。我不想这样做。如何在 studentUniqueid2 中创建自己的唯一键。我尝试使用事务而不是推送,但问题是事务而不是添加另一个键值对只会更新整个键,只在 table 中留下我不想要的最新学生唯一 ID。这是我的代码
let createData=adminDatabase.ref('/ReferralSystem/joinedtransactionlog');
createData.transaction(function(currentData){
if(currentData !== InviterId){
return {
[InviterId]: {
[member.id] : "active"
}
}
}else{
console.log("curretn data exists");
}
});
我正在使用 javascript 并使用 Admin 平台在 firebase 实时数据库系统上工作。
如果我没理解错的话,你有两个 UID:一个给邀请者,另一个给 invitee/member。在这种情况下,您可以在问题中编写结构:
createData.child(inviterUID).child(memberUID).set("active");
通过简单的 set
操作执行此操作将比您尝试的事务更好地扩展,因为您在整个 StudentData
节点上创建争用,而这仅执行幂等写入。
如果数据已经存在,则无需阻止写入数据,因为操作是幂等的:后续写入不会改变第一次写入的结果。