1
我有一个问题MVC方法名赋予一个名字到控制器,载入我的模型:node.js中表达可变
我app.js对于为例我有test.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);
在模型
如果我想找到我的分贝东西,我想这样做:
models.test.find({}, function(err, docs){});
,但它不工作因为... Ë测试不明,我应该做
models.name.find({}, function(err, docs){});
所以我会通过模型的名称替换名称
感谢
谢谢,但我有一个问题,如果我CONSOLE.LOG(型号),我有: {测试: {[功能:模式] .... 但是当我尝试的console.log(模型[ '测试'])或执行console.log(models.test) 我已经undefinded – Ajouve
号,您应该使用测试模型作为'models.test'。但是,自从'fs.readdir'异步之后,要小心在哪里调用'models.test'。如果你想使用它作为同步,你可以使用'fs.readdirSync'功能。在你的情况下,你可以在models [name] = require('./ models /'+ name)(app.mongoose).model之后调用'models.test';' –
更新了答案... –