node.js express mvc method name in variable

I have a problem to give a name to a controller to load my models:

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

for exemple I have test.js in models

If I want to find something in my db I would like to do:

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

but it doesn't works because test is unknow, I should do

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

So I would replace name by the name of the model

Thanks

Try this;

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

If you want to read directory sync mode, you can use

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