2016-05-31 10 views
3

Ich bin neu in Firebase und ich versuche, eine $variable in einer Funktion zu übergeben, um zu überprüfen, ob die $variable existiert.Firebase Return-Ausgang von Funktion

function ifExistWaybillNo(waybill_no) 
{ 
    var databaseRef = firebase.database().ref('masterlist'); 
    databaseRef.orderByChild("waybill_no").equalTo(waybill_no).on('value', function(snapshot){ 
    alert(snapshot.exists()); //Alert true or false 
    }); 
} 

Die obige Funktion Arbeit ist in Ordnung, aber wenn ich alert(snapshot.exists());-return snapshot.exists(); verändern es funktioniert nicht. Es gibt nur undefined zurück, was true oder false.

zurückgeben sollte Wie kann ich das tun? Vielen Dank im Voraus

Antwort

1

Fast alles Firebase ist asynchron. Wenn Sie die Funktion ifExistWaybillNo aufrufen, erwartet es eine sofortige Rückkehr, nicht zu warten. Bevor also Ihre databaseRef.orderByChild("waybill_no") beendet ist, hat die Anweisung, die die Funktion aufgerufen hat, bereits entschieden, dass die Rückgabe undefined ist.

Die Möglichkeit, dies zu beheben, besteht darin, eine Callback-Funktion zu übergeben und die Rückgabe dort zu verwenden. Eine genaue Erklärung dafür ist hier sehr gut gemacht: return async call.

Sie müssen nur einige der Funktionen umbenennen und die dort verwendete Syntax befolgen.

zu starten:

function(waybill_no, callback) { 
    databaseRef.orderByChild("waybill_no").equalTo(waybill_no).on('value', function(snapshot) { 
    var truth = snapshot.exists(); 
    callback(truth); // this will "return" your value to the original caller 
    }); 
} 

Denken Sie daran, ist fast alles Firebase asynchron.

+0

Ich werde das im Hinterkopf behalten, vielen Dank. –

+0

Kein Problem, fröhliche Codierung. – theblindprophet

Verwandte Themen