2017-02-03 12 views
0

У меня есть nodejs экспорт как этотNodejs экспортируют не возвращает значение

exports.add = function(req){ 

    var newUser = new User({ 
     email: req.body.email, 
     password: req.body.password, 
    }); 

    // Attempt to save the user 
    newUser.save(function(err) { 
     if (err) { 
      return true; 

     } 
     return false; 
    }); 

} 

Но это дает как неопределенные, когда я вызвать функцию как этот

var value = instance.add(req); 

Здесь например импортный экземпляр JavaScript file

+2

Возможный дубликат [Как вернуть ответ от асинхронного вызова?] (Http://stackoverflow.com/questions/14220321/how-do-return-the-response-from-an-asynchronous- вызов) –

ответ

0

Как указано в комментариях @Ben Fortune, вы не можете просто вернуть значение из асинхронного вызова функции. Вы должны использовать обратные вызовы или обещания:

обратного вызова путь:

exports.add = function (req, callback) { 

    var newUser = new User({ 
     email: req.body.email, 
     password: req.body.password, 
    }); 

    // Attempt to save the user 
    newUser.save(function(err) { 
     if (err) { 
      callback(err, null); 
     } 
     callback(null, newUser.toJSON()) ; 
    }); 

} 

Тогда:

instance.add(req, function(err, value) { 
    if (err) throw err; 
    // use value here 
}); 

Подробнее: How do I return the response from an asynchronous call? и реализовать Promise путь, если вы предпочитаете ,