Nodejs导出不返回值

时间:2017-02-03 16:38:15

标签: node.js return export

我有像这样的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文件实例

1 个答案:

答案 0 :(得分: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?如果您愿意,可以实施承诺方式。

相关问题