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