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)
| 归档时间: |
|
| 查看次数: |
9310 次 |
| 最近记录: |