Firebase: come generare un ID numerico univoco per la chiave?

Ho bisogno di ID numerici per la leggibilità umana. Come posso inserirlo in Firebase?

Voglio l’ID numerico per le chiavi, ad esempio “000000001”, “000000002”, “00000003”, “00000004”.

Il motivo per cui ho bisogno è che questi ID diventeranno l’ID dell’object permanente sia online che offline. Voglio che gli utenti siano in grado di navigare su quella pagina object semplicemente inserendo l’URL “/ objects / 00000001” senza sforzi.

Sto chiedendo qui, perché voglio sapere se questo può essere fatto senza usare .priority , sotto-proprietà, ecc. Immagino che il metodo set possa farlo in qualche modo. Se non è ansible, dimmi di no, posso accettare quella risposta.

    Suggerirei di leggere la documentazione di Firebase. In particolare, consulta la sezione Salvataggio dei dati della guida Web JavaScript di Firebase.

    Dalla guida:

    Ottenere l’ID univoco generato da push ()

    La chiamata push () restituirà un riferimento al nuovo percorso dati, che è ansible utilizzare per ottenere il valore del proprio ID o impostare i dati su di esso. Il codice seguente genererà gli stessi dati dell’esempio precedente, ma ora avremo accesso all’ID push univoco che è stato generato

     // Generate a reference to a new location and add some data using push() var newPostRef = postsRef.push({ author: "gracehop", title: "Announcing COBOL, a New Programming Language" }); // Get the unique ID generated by push() by accessing its key var postID = newPostRef.key; 

    Fonte: https://www.firebase.com/docs/web/guide/saving-data.html

    • Un push genera un nuovo percorso dati, con un timestamp del server come key . Questi tasti assomigliano a -JiGh_31GA20JabpZBfa , quindi non numerici.
    • Se si desidera creare un solo ID numerico, si dovrebbe fare in modo che un parametro dell’object eviti di sovrascrivere la chiave generata.
      • Le chiavi (i percorsi dei nuovi dati) sono garantite come uniche, quindi non c’è motivo di sovrascriverle con un tasto numerico.
      • Puoi invece impostare l’ID numerico come figlio dell’object.
      • È quindi ansible interrogare gli oggetti da tale figlio ID utilizzando Query Firebase .

    Dalla guida:

    In JavaScript, lo schema di chiamare push () e quindi chiamare immediatamente set () è così comune che ti permettiamo di combinarli semplicemente passando i dati da impostare direttamente su push () come segue. Entrambe le seguenti operazioni di scrittura comporteranno il salvataggio degli stessi dati su Firebase:

     // These two methods are equivalent postsRef.push().set({ author: "gracehop", title: "Announcing COBOL, a New Programming Language" }); postsRef.push({ author: "gracehop", title: "Announcing COBOL, a New Programming Language" }); 

    Fonte: https://www.firebase.com/docs/web/guide/saving-data.html

    Come spiegato sopra, puoi utilizzare l’id push predefinito Firebase.

    Se vuoi qualcosa di numerico puoi fare qualcosa in base al timestamp per evitare collisioni

    Qualcosa basato su data, ora, secondo, ms e qualche int casuale alla fine

     01612061353136799031 

    Che si traduce in:

     016-12-06 13:53:13:679 9031 

    Tutto dipende dalla precisione di cui hai bisogno (i numeri di previdenza sociale fanno lo stesso con alcuni caratteri casuali alla fine della data). Come quante transazioni saranno previste durante il giorno, ora o secondo. Potresti voler ridurre la precisione per favorire la facilità di digitazione.

    Puoi anche fare una transazione che incrementa il numero id, e in caso di successo avrai un numero consecutivo unico per quell’utente. Questi possono essere fatti sul lato client o server.

    ( https://firebase.google.com/docs/database/android/read-and-write )