node.js在variables中表示mvc方法名称

我有一个问题给控制器加载我的模型的名称:

我的app.js

var express = require('express'); var app = express(); app.everyauth = require('everyauth'); app.mongoose = require('mongoose'); var fs = require('fs'); var config = require('./config.js')(app, express); //Include models var models = {}; fs.readdir(__dirname + '/models', function(err, files){ if (err) throw err; files.forEach(function(file){ var name = file.replace('.js', ''); models.name = require('./models/' + name)(app.mongoose).model; }); }); //Include controllers fs.readdir(__dirname + '/controllers', function(err, files){ if (err) throw err; files.forEach(function(file){ var name = file.replace('.js', ''); require('./controllers/' + name)(app, models); }); }); app.listen(process.env.PORT || 3000); 

例如,我在模型中有test.js

如果我想在我的数据库中find一些我想要做的事情:

 models.test.find({}, function(err, docs){}); 

但它不工作,因为testing是不知道的,我应该这样做

 models.name.find({}, function(err, docs){}); 

所以我会用模型的名字replace名字

谢谢

尝试这个;

 models[name] = require('./models/' + name)(app.mongoose).model; 

如果你想读目录同步模式,你可以使用

 var models = {}; var files = fs.readdirSync(__dirname + '/models'); for(var i in files) { var name = files[i].replace('.js', ''); models[name] = require('./models/' + name)(app.mongoose).model; } // Now, you can use models.test