module.export函数不返回结果

我有一些问题返回模块函数的结果。
下面是我正在使用的两个文件。

当我调用导出的函数时,它返回nothings。
任何build议/修复为什么? 它是否与callback有关?

车型/ 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; }); }; 

books.js

 var Models = require('../models'); console.log(Models("myLibrary")); //return nothing 

你没有得到任何结果的原因是你试图从asynchronouscallback同步返回一个函数值。 返回语句不是提供函数值,而是停止函数,作为return; 通常会这样做。 这就是为什么你必须使用callback进行asynchronous操作:

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

这就是你将能够使用它的方式:

 var Models = require('../models'); Models('myLibrary', function(models) { console.log(models); }); 

我以不同的方式解决类似的问题。 我不确定是否正确。

在主节点js我使用一个名为产品的模型。 我通过产品和资源misc.js. 以下是我的server.js文件的一部分

 var misc = require('./misc'); app.get('/groupbyCategory', function(req,res,next) { var res2; misc.addX(product,res); }) 

IN misc.js按function分组,并将该值直接返回到angular度控制器。 没有必要将结果返回给server.js,并从server.js返回angular度控制器。 所以我觉得等待和其他回电似乎是不必要的。 在misc.js里面我保持下面的代码。

 exports.addX = function(product,res) { product.aggregate([ { $group: { _id: {category: "$category"}, count: { $sum: 1 } }} ], function (err, result) { if (err) { console.log(err); return err; } else { //return result; console.log(result); res.send(result); } }); };