2016-11-21 12 views
0

ユーザー情報を取得する関数を作成します。関数からデータを返すと、undefinedが返されます。私はconsole.log関数の中にすべてのユーザーデータを返します。どうしたの?socket io、mongoose関数が未定義を返します

コード:

function user() { 
    var uid = socket.request.headers.cookie.uid; 
    var pwd = socket.request.headers.cookie.pass; 
    if (uid != undefined && pwd != undefined) { 
     models.user.findOne({ 
      '_id': uid, 
      'password': pwd 
     }, function (err, user) { 
      console.log(user); 
      return (user) ? user : false; 
     }); 
    } else { 
     return false; 
    } 
} 

console.log(user()); 

答えて

0

あなたがコールバックを必要とする、それが初心者

function user(callback) { // receives a callback 
    var uid = socket.request.headers.cookie.uid; 
    var pwd = socket.request.headers.cookie.pass; 
    if (uid != undefined && pwd != undefined) { 
     models.user.findOne({ 
      '_id': uid, 
      'password': pwd 
     }, callback); // pass callback to mongoose 
    } else { 
     return callback(new Error("No uid")); // pass callback when no uid 
    } 
} 

user(function(err, userData) { // now you invoke fn to user function 
           // err is err from database or from new Error("No uid") 
           // userData is database User 
    if (err) 
     return console.log(err); 
    console.log(userData); 
    // userData should be used here 
    // for example. send this User by socket 
    // socket.emit('databaseUser', userData); 
}); 
するための基本的な問題です
関連する問題