2016-04-30 17 views
1

Ich bin neu zu sequelize. Ich benutze MySQL als meine Datenbank. Ich habe eine Sequelize-Abfrage, die die E-Mail-ID aus der Datenbank findet. Mit dem Ergebnis dieser Abfrage habe ich die ID dieser Zeile erhalten. Jetzt muss ich diesen Wert zurückgeben. Kann mir bitte jemand helfen wie das geht.Geben Sie einen Wert von Sequelize Abfrage

Hier ist mein Code.

var userId = getUserId(email_address); 
function getUserId(email_address) { 
    models.users.findOne({ 
    where: { 
     email: email_address 
    } 
    }).then(function(result) { 
     if (result) { 
     var applicantId = result.id; 
     return applicantId; // This is what I need to do 
     } else { 
     console.log("Could not find Email"); 
     } 
    }); 
} 

Hier muss ich die Variable AntragstellerID an die aufrufende Funktion zurückgeben.

+0

Zunächst kann man nicht nur den Wert zurück. Die DB-Abfrage ist ein asynchroner Aufruf und muss als solcher behandelt werden. Ihre Funktion getUserId() muss eine Promise zurückgeben. Geben Sie einfach die models.users.findOne() -Methode zurück. –

+0

Danke für die Antwort @Himmet. Wenn ich models.users.findOne() zurückgebe, erhalte ich ein Versprechungsobjekt bei userId. Wie auf den Wert von diesem Zusicherungsobjekt zugreifen? Kannst du mir bitte helfen? –

+0

Hier ist ein Tutorial zur Verwendung von JavaScript verspricht http://www.sitepoint.com/overview-javascript-promises/ Ich schlage vor, Sie beginnen dort. – grimurd

Antwort

2

Der Sequelize-Aufruf an die Datenbank ist asynchron, also müssen Sie Ihren Code etwas ändern, um mit Versprechungen zu arbeiten. Etwas wie folgt aus:

function getUserId(email_address) { 
    return models.users.findOne({ 
    where: { 
     email: email_address 
    } 
    }); 
} 

getUserId("[email protected]").then(function(result){ 
    console.log(result.id); 
}); 

Check-out this fiddle, die verspottet Ihr Szenario

+0

Danke @ scottjustin5000. Das hat funktioniert. Ich war etwas verwirrt mit Versprechungen. –

Verwandte Themen