2017-07-21 5 views
0

Ich habe mit einem (Feuerbasis & NodeJS) Problem zu kämpfen und es ist der 4. Teil dieses Problems, wie ich Daten nach der Anmeldung server.js passieren kannPässe Daten NodeJS Server von JavaScript-Datei - NodeJS

Ich habe versucht, this Aber versäumt, es funktioniert zu bekommen.

Grundsätzlich versuche ich, Benutzer idToken zum Server zu senden, um es verifiziert zu bekommen.

Das, was ich versucht habe:

const promise = auth.signInWithEmailAndPassword(email, pass).then(function(){ 
    $('.load-bar').hide(); 
    firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idToken) { 
     // Send token to your backend via HTTPS 
     console.log(data); 
     $http.get('server', {params: {idToken: idToken}}) 
      .success(
       function(success){ 
        console.log('success'); 
       }) 
      .error(
       function(error){ 
        console.log(error) 
       }); 
    }).catch(function(error) { 
     // Handle error 
    }); 
}); 

Aber es tut nichts kein Fehler nicht Erfolg und auf server.js

app.get('/server', function(req,res, next){ 
    console.log(req.query.idToken); 
}); 

aber immer noch nichts. Was mache ich falsch?

+0

Ist 'console.log (req.query.idToken);' auf dem Server aufgerufen und tut es Ausgabe etwas? Wenn nicht, wird der 'console.log (data)' auf dem Client aufgerufen? Wird bei '// Handle error' ein Fehler gemeldet? –

Antwort

0

Ihre Route muss antworten:

app.get('/server', function(req,res, next){ 
    console.log(req.query.idToken); 
    return res.send('success!'); 
}); 
1

Wenn Sie nicht Promise von then zurückkehren, wird die Promiseundefined zurück. Und um ein Versprechen mit Erfolg zu lösen, müssen Sie Promise.resolve zurückgeben und mit Fehler beenden müssen Sie Promise.reject zurückgeben. Versuchen Sie dies -

const promise = auth.signInWithEmailAndPassword(email, pass).then(function(){ 
    $('.load-bar').hide(); 
    return firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idToken) { 
     // Send token to your backend via HTTPS 
     console.log(data); 
     $http.get('server', {params: {idToken: idToken}}) 
      .success(
       function(success){ 
        return Promise.resolve(success); 
       }) 
      .error(
       function(error){ 
        return Promise.reject(error); 
       }); 
    }).catch(function(error) { 
     return Promise.reject(error); 
    }); 
}); 
+0

Fehler - 'promise.reject' ist keine Funktion –

+0

@NomanAli Stellen Sie sicher, dass Sie' Promise.reject' und nicht 'promise.reject' verwendet haben. – shawon191

+0

mit Promise sagt in der Konsole 'ReferenceError: $ http ist nicht definiert' –

0

Das Problem ist, dass Sie Ihre Antwort nicht zurück zum Ursprung der API-Anruf senden. Aus diesem Grund erhalten Sie keine Erfolgs- oder Fehlerergebnisse.

Ändern Sie den Code in Server als:

app.get('/server', function(req, res, next){ 
    console.log(req.query.idToken); 
    res.send(200);/*Just sends success code*/ 
    //res.send("Token rcvd");/*Or send some custom message back to call origin*/ 
});