2016-04-30 25 views
1

私は後継者が新しくなりました。私は自分のデータベースとしてmysqlを使用しています。私はデータベースからemail-idを見つけるsequelizeクエリを持っています。このクエリの結果を使って、その行のIDを取得しました。今私はこの値を返す必要があります。誰かがそれをどうやって手伝ってくれますか?sequelizeクエリから値を返します

ここに私のコードです。

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"); 
     } 
    }); 
} 

ここで、変数applicantIdを呼び出し関数に返す必要があります。

+0

の最初のを皮肉って、チェックアウトthis fiddle、。 dbクエリは非同期呼び出しであり、そのように処理する必要があります。あなたの関数getUserId()はPromiseを返す必要があります。 models.users.findOne()メソッドを返すだけです。 –

+0

返信いただきありがとうございます@Himmet。 models.users.findOne()を返すと、私はuserIdで約束オブジェクトを取得します。その約束オブジェクトから価値にアクセスするには?あなたは私を助けてくれますか? –

+0

ここでは、javascriptの約束を使用する方法のチュートリアルです。http://www.sitepoint.com/overview-javascript-promises/私はそこから始めることをお勧めします。 – grimurd

答えて

2

データベースへのSequelize呼び出しは非同期であるため、約束事で作業するためにコードを少し変更する必要があります。このような何か:

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

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

あなただけの値を返すことはできませんあなたのシナリオ

+0

ありがとうございます@ scottjustin5000。これはうまくいった。私は約束と混乱していた。 –

関連する問題