Search code examples
node.jsmongodbmongoosemodels

Node.js + MongoDB + Express + Mongoose. How to require all the models in a particular folder by a simple code?


Consider this is my folder structure

express_example
|---- app.js    
|---- models    
|-------- songs.js    
|-------- albums.js    
|-------- other.js    
|---- and another files of expressjs

my code in file songs.js

var mongoose = require('mongoose')
, Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;

var SongSchema = new Schema({
name: {type: String, default: 'songname'}
, link: {type: String, default: './data/train.mp3'}
, date: {type: Date, default: Date.now()}
, position: {type: Number, default: 0}
, weekOnChart: {type: Number, default: 0}
, listend: {type: Number, default: 0}
});

mongoose.model('Song', SongSchema);

in file albums.js

  var mongoose = require('mongoose')
, Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;

var AlbumSchema = new Schema({
name: {type: String, default: 'songname'}
, thumbnail: {type:String, default: './images/U1.jpg'}
, date: {type: Date, default: Date.now()}
, songs: [SongSchema]
});
mongoose.model('Album', AlbumSchema);

I can get any model by:

require('mongoose').model(name_of_model);

But how to require all the models in a particular folder by a simple code not by name_of_model? In above example all models in the folder ./models/*


Solution

  • var models_path = __dirname + '/app/models'
    fs.readdirSync(models_path).forEach(function (file) {
      require(models_path+'/'+file)
    })