Actualmente estoy tratando de hacer un script donde paso mi propia clave única en firebase como clave principal. Tiene que funcionar así
StudentData -Student Unique id - referadID : "active", - referadID2 : "inactive", - referadID3 : "active", -Student Unique id2 -referadIDnew : "active",
Aquí, cada estudiante refiere a otro estudiante y una vez que un estudiante referido se une, ese estudiante referido que se unió tiene su propia identificación única que almacena el valor de activo o inactivo. El problema aquí es que si uso push, generará una identificación única que no quiero porque dificultará el trabajo mientras uso la clasificación. no quiero hacerlo ¿Cómo puedo crear mi propia clave única en studentUniqueid2. Intenté usar la transacción en lugar de empujar, pero el problema es que la transacción, en lugar de agregar otro par de valores clave, simplemente actualizaría la clave completa, dejando solo la última identificación única del estudiante en la tabla que no quiero. Aquí está mi código
let createData=adminDatabase.ref('/ReferralSystem/joinedtransactionlog'); createData.transaction(function(currentData){ if(currentData !== InviterId){ return { [InviterId]: { [member.id] : "active" } } }else{ console.log("curretn data exists"); } });
Estoy usando javascript y trabajando en el sistema de base de datos en tiempo real de Firebase con plataforma de administración.
Si entiendo correctamente, tiene dos UID: uno para el que invita y otro para el invitado/miembro. En ese caso, puede escribir la estructura en su pregunta con:
createData.child(inviterUID).child(memberUID).set("active");
Hacer esto con una operación de set
simple se escalará mucho mejor que la transacción que intentó, ya que está creando una contención en todo el nodo StudentData
mientras que esto simplemente realiza una escritura idempotente.
No es necesario evitar que se escriban los datos si ya existen, ya que la operación es idempotente : las escrituras posteriores no cambian el resultado de la primera escritura.