2016-06-28 7 views
0

Ich habe ein Problem mit meinem angularjs Code. Ich habe einen Code für die Anmeldung erstellt, aber ich muss überprüfen, ob der aktuelle Benutzer bereits in der Datenbank per E-Mail existiert. Ich dachte, zwei Anfragen an die Datenbank zu stellen. (Zwei $ http). Eine, um die Anzahl der Benutzer mit dieser E-Mail in der Datenbank zu überprüfen, ob diese von Null verschieden ist, und andere in die Datenbank einzufügen, wenn die Anzahl der Benutzer mit der E-Mail null ist, aber ich habe ein Problem. Schauen Sie meinen Code bitte:angularjs zwei Anfrage fließen

I made a service to verify the user email in database

dieser Code ausgeführt wird, aber die Anrufe von Warnungen ist falsch. Die Warnung ("test2") wird zuerst aufgerufen, dann die Warnung ("test1"), aber ich überprüfe zuerst.

Entschuldigung, aber ich lerne gerade eckig. Das ist meine Frage! Vielen Dank!

+0

Sie müssen Ihren Code hier als Text, nicht ein Bild aufzunehmen. – Laurel

+0

drücken Sie die '' '{}' '' nach dem Kopieren Einfügen Ihres Codes innerhalb – vtange

+0

Ok sorry. Dies ist mein erster Beitrag hier;) –

Antwort

0

Sie werden Ihre zweite Serveranfrage innerhalb Ihrer .then() -Prozedur verschieben müssen. Der aktuelle Code führt einfach beide Serveranforderungen aufgrund ihrer asynchronen Natur fast parallel aus.

Was Sie suchen etwas näher an das ist ...

User.verificar($scope.cadastro.email).then(function(usuario){ 
    if(usuario.existe == true){ 
     //existing code 
    } else { 
    //make function call to insert user 
    } 
}); 
+0

Sehr gut! Thaks Mann. Ich habe gerade erst angefangen! Ich wusste nicht, dass das. Dann asynchron ist. Danke für die Hilfe ;) –

0

Es ist normal, der Anruf an .then() ist asynchron, also in Ihrem Code, wenn Sie aufrufen Sie einen Aufruf an Ihre API und weiterhin Ausführen Ihres Codes, deshalb zeigt es zuerst "test2".

Versuchen alert("test2") vor $location.path(...)


Sie setzen müssen, um den Anruf auf die zweite Anforderung innerhalb der ersten .then() setzen, wenn der Benutzer nicht

0

Sehr gut funktioniert existiert. Thaks, aber ich habe noch Probleme. Ich brauche, dass meine Funktion aufhört, in den "Return false" -Codes zu laufen. Zum Beispiel:

  • Zuerst: Überprüfen Sie, ob vorhandene Benutzer mit der E-Mail ausgewählt haben.
  • Zweitens: Fügen Sie den Benutzer in der Datenbank

ich sah, dass mein Code Faust die zweite Option läuft. Zuerst speichert es den neuen Benutzer in der Datenbank, und zweitens führt er die Verifizierung durch. Wenn der Winkel asynchron ist, wie kann ich zwei sequenzielle Anfragen machen?

Ich warte;)