【发布时间】:2018-05-25 07:11:44
【问题描述】:
我想用 firebase 函数执行一个函数 CheckAndCreate() 并仅在 CheckAndCreate() 时执行第二个函数 SendMessage()已为用户返回一个密钥...
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");
});
};
我的问题是对 Promises 的理解和 Javascript 的翻译。我可以执行我想要的吗?我该怎么做?
谢谢。
【问题讨论】:
-
您显示的代码是否存在特定问题?
-
一点也不!我唯一的问题实际上是,我在没有用户密钥的情况下执行第二个函数,因为 firebase 是异步的。我需要等待用户密钥
标签: javascript node.js firebase promise es6-promise