In Firebase quando si utilizza push () Come ottengo l’ID univoco e l’archivio nel mio database

Sto spingendo i dati in Firebase, ma voglio anche memorizzare un ID univoco nel mio database. qualcuno può dirmi, come spingere i dati con un ID unico.

sto provando in questo modo

writeUserData() { var key= ref.push().key(); var newData={ id: key, Website_Name: this.web_name.value, Username: this.username.value, Password : this.password.value, website_link : this.web_link.value } firebase.database().ref().push(newData); } 

l’errore è “ReferenceError: ref non definito”

È ansible ottenere la chiave utilizzando il key() funzione key() di qualsiasi object ref

Ci sono due modi per invocare push nell’SDK JavaScript di Firebase.

  1. usando push(newObject) . Questo genererà un nuovo id push e scriverà i dati nella posizione con quell’ID.

  2. usando push() . Questo genererà un nuovo id push e restituirà un riferimento alla posizione con quell’ID. Questa è una pura operazione lato client .

Conoscendo il n. 2, puoi facilmente ottenere un nuovo ID push sul lato client con:

 var newKey = ref.push().key(); 

È quindi ansible utilizzare questa chiave nell’aggiornamento a più posizioni.

https://stackoverflow.com/a/36774761/2305342

Se invochi il metodo push() Firebase senza argomenti è una pura operazione lato client.

 var newRef = ref.push(); // this does *not* call the server 

Puoi quindi aggiungere la key() del nuovo riferimento al tuo articolo:

 var newItem = { name: 'anauleau' id: newRef.key() }; 

E scrivi l’object nella nuova posizione:

 newRef.set(newItem); 

https://stackoverflow.com/a/34437786/2305342

nel tuo caso :

 writeUserData() { var myRef = firebase.database().ref().push(); var key = myRef.key(); var newData={ id: key, Website_Name: this.web_name.value, Username: this.username.value, Password : this.password.value, website_link : this.web_link.value } myRef.push(newData); } 

Firebase v3 Salvataggio dei dati

 function writeNewPost(uid, username, picture, title, body) { // A post entry. var postData = { author: username, uid: uid, body: body, title: title, starCount: 0, authorPic: picture }; // Get a key for a new Post. var newPostKey = firebase.database().ref().child('posts').push().key; // Write the new post's data simultaneously in the posts list and the user's post list. var updates = {}; updates['/posts/' + newPostKey] = postData; updates['/user-posts/' + uid + '/' + newPostKey] = postData; return firebase.database().ref().update(updates); } 

Puoi ottenere l’ultimo ID articolo inserito usando Promise come questo

 let postRef = firebase.database().ref('/post'); postRef.push({ 'name': 'Test Value' }) .then(res => { console.log(res.getKey()) // this will return you ID }) .catch(error => console.log(error)); 

Sembra che ora .push () restituisca sempre un Observable. Quando ho applicato le soluzioni sopra ho avuto il seguente errore: “Tipo ‘String’ non ha firme di chiamata compatibili”.

Detto questo, rimando a ciò che ha funzionato nel mio caso per questa nuova versione:

Digitare ‘String’ non ha firme di chiamata compatibili

Questo ha funzionato per me:

  var insertData = firebase.database().ref().push(newData); var insertedKey = insertData.getKey(); // last inserted key 

Vedi qui: Salvataggio dei dati con Firebase.