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