German Firebase Realtimedatabase Child Auto ID ausschalten

Alexander Stolte

Expert
Licensed User
Longtime User
Hallo,

Wie kann ich meine eigene id eingeben statt dieser Random id, oder besser gesagt wie kann ich ausschalten, dass er eine random id nutzt?

ich will das rote wegbekommen, da ich bereits darüber die eigentliche id habe.

hier mein code:

B4X:
roomref.Initialize("room",Starter.realtime.getReference2("/rooms/" & Main.cursorchatmenu.GetString("sessionid")),"room")
    
    roomref.push.setValue(CreateMap( "chatid" :Main.cursorchatmenu.GetString("sessionid")),"newroom", "post")
    roomref.orderByKey

firebase.PNG

Grüße
 

DonManfred

Expert
Licensed User
Longtime User
Wie kann ich meine eigene id eingeben statt dieser Random id, oder besser gesagt wie kann ich ausschalten, dass er eine random id nutzt?
Keine Ahnung. Das ist das Resultat aus der Push-Methode.
roomref.push erstellt einen Key mit einem eindeutigen Key. Das kannst Du nicht verhindern; So arbeitet die Realtime-DB (Siehe Doku).

Du erhälst den Key -Kyvit*

HIER erstellst Du nun einen Inhalt mit einer chatid. Das ist deine Referenz. Firebase interessiert sich nicht dafür.

Was genau möchtest Du erreichen?
 

Alexander Stolte

Expert
Licensed User
Longtime User
Ach so. Ich Orientiere mich an einem Tutorial in einer anderen Sprache und dort wird erklärt das diese Generierte ID erst auftritt wenn man folgendes mit angibt:
B4X:
 let itemRef = messageRef.childByAutoId()
erst bei .childByAutoId wird diese generierte id hinzugefügt.

Ich möchte erreichen das ich meine eigene id verwenden kann um an die "chatid" zu kommen.
 

DonManfred

Expert
Licensed User
Longtime User
Das Tutorial ist kein Android oder Java Tutorial.
Ich denke nicht, dass es ein guter Vergleich ist.
Scheinbar ist das in Android anders.

Anmerkung: Mir ist nichts beim wrappen aufgefallen was auf eine Möglichkeit deuten würde diese AutoID abzuschalten.
 

DonManfred

Expert
Licensed User
Longtime User
Ich möchte erreichen das ich meine eigene id verwenden kann um an die "chatid" zu kommen.
So wie ich das sehe solltest du vermutlich (ich bin auch kein Firebase-Database Profi! :D) eine Referenz zu deinen Räumen haben. Da dann deinen anlegen mit der id wie von FB vorgegeben. Dann holst du Dir childreferenzen wo Du genau deine id als filter einsetzt.
Am Ende müsste dann eigentlich (als Value des Snapshot) eine Map mit
deinen Werten aus CreateMap( "chatid" :Main.cursorchatmenu.GetString("sessionid"),"newroom", "post")
bekommen.
 

Alexander Stolte

Expert
Licensed User
Longtime User
Ich habe mal einen blick in die Dokumentation geworfen und wurde fündig, statt "push" gebe ich "child" ein, mit der sessionid und schon ist mein Problem gelöst. Das Problem ist nämlich, das ich Firebase nur für den Chat benötige, wie der raum erstellt wurde hab ich in einer externen Datenbank, deshalb die sessionid. Würde ich jetzt die Generierte ID aus Firebase für den raum nutzen, müsste ich eine weitere spalte in der externen Datenbank erstellen und diese id erstmal dort speichern, aber das ist ein Zwischenschritt den ich mir somit sparen kann und es ein wenig Manipuliersicherer macht. Danke :)
 
Top