Ich möchte eine Funktion CheckAndCreate() mit einer Feuerbasis Funktion auszuführen und eine zweite Funktion Sendmessage() nur ausgeführt werden, wenn CheckAndCreate() hat einen Schlüssel für einen Benutzer zurückgegeben ...Javascript Versprechen und Firebase
var checkAndCreate = (sessionId, fbid, prenom, nom, genre) => {
var userz = firebase.database().ref().child("accounts").orderByChild("fbid").equalTo(fbid).once("value").then(function(snapshot) {
var exists = (snapshot.val() !== null);
if (exists) {
for (var key in snapshot.val()) break;
console.log("ouiii jexiste" + key);
sessions[sessionId].key = key;
// I have the key we can continue
snapshot.forEach(function(childSnapshot) {
console.log('snapshot.dernier_message'+childSnapshot.val().dernier_message);
sessions[sessionId].dernier_message = childSnapshot.val().dernier_message;
});
}
else {
admin.auth().createCustomToken(fbid).then(function(customToken) {
firebase.auth().signInWithCustomToken(customToken).then(function() {
var user2 = firebase.auth().currentUser;
var keyid = firebase.database().ref().child('accounts').push();
sessions[sessionId].key = keyid.key;
// I have the key we can continue
sessions[sessionId].dernier_message = new Date();
firebase.database().ref().child('accounts').child(keyid.key).set({
fbid: fbid,
prenom: prenom,
nom: nom,
nb_agression : 0,
dernier_message : new Date(),
genre: genre,
date: new Date().toISOString()
}).catch(function(error) {
console.log("erreur from firebas 9");
});
}).catch(function(error) {
console.log("erreur from firebas 10");
});
}).catch(function(error) {
console.log("erreur from firebas 11");
});
} // fin
}).catch(function(error) {
console.log("erreur from firebas 8 once");
});
};
Mein Problem ist das Verständnis von Promises und die Übersetzung in Javascript. Kann ich ausführen, was ich will und wie kann ich das tun?
Danke.
Gibt es ein spezifisches Problem mit dem Code, den Sie gezeigt haben? –
gar nicht! Mein einziges Problem ist eigentlich, ich führe die zweite Funktion ohne Benutzerschlüssel aus, da Firebase async ist. Ich muss auf den Benutzerschlüssel warten –