module.export函数不返回结果

use*_*015 7 module return node.js

我在从模块函数返回结果时遇到一些问题.
以下是我正在使用的两个文件.

当我调用导出的函数时,它返回nothings.
有什么建议/修复原因吗?它与回调有关吗?

车型/ index.js

module.exports = exports = function(library) {    
    modCodes.findOne({name: library}, {modcode:1}, function(err, mc) {
      if (err) throw new Error(err);
      var db = mongoose.createConnection('mongodb://localhost:27017/' + mc.modcode + '?safe=true');
      var models = {
        Books: db.model('books', require('./schemas/books'))
        }

        return models;
    });

};
Run Code Online (Sandbox Code Playgroud)

books.js

var Models = require('../models');    
console.log(Models("myLibrary")); //return nothing
Run Code Online (Sandbox Code Playgroud)

hex*_*ide 19

你没有得到结果的原因是你试图从异步回调中同步返回一个函数值.而不是提供函数值,return语句将改为停止函数,正如return;通常那样.这就是您必须使用回调进行异步操作的原因:

module.exports = exports = function(library, callback) {
  modCodes.findOne({name: library}, {modcode: 1}, function (err, mc) {
    if (err) throw new Error(err);
    var db = mongoose.createConnection('mongodb://localhost:27017/' + mc.modcode + '?safe=true');
    var models = {
      Books: db.model('books', require('./schemas/books'))
    }
    callback(models);
  });
};
Run Code Online (Sandbox Code Playgroud)

这就是你如何使用它:

var Models = require('../models');    
Models('myLibrary', function(models) {
  console.log(models);
});
Run Code Online (Sandbox Code Playgroud)