node.js - ExpressJS require() load order and Mongoose missing ModelSchema -


i'm learning mean stack , have found myself load order issue doesn't seem make sense.

the below code shows server.js loading routes file, in turn pulls in controller model, in turn requires model itself.

if don't include reference model routes.js missingschemeerror when startup server. why? missing regarding loading of resources?

my understanding exports file imported require() prior attempting run code.

server.js

// modules ================================================= var express             = require('express'); var bodyparser      = require('body-parser'); var methodoverride  = require('method-override'); var mongoose            = require('mongoose'); var morgan              = require('morgan'); var app                 = express(); // configuration ===========================================  // config files var db = require('./config/db');  // set our port var port = process.env.port || 8080;   // connect our mongodb database  mongoose.connect(db.url);   // data/stuff of body (post) parameters // parse application/json  app.use(bodyparser.json());   // parse application/vnd.api+json json app.use(bodyparser.json({ type: 'application/vnd.api+json' }));   // parse application/x-www-form-urlencoded app.use(bodyparser.urlencoded({ extended: true }));   // override x-http-method-override header in request. simulate delete/put app.use(methodoverride('x-http-method-override'));   // set static files location /public/img /img users app.use(express.static(__dirname + '/public'));   // set morgan log requests app.use(morgan('dev'));  // routes ================================================== require('./app/routes')(app);  

routes.js

//this line problem. why needed? var customer = require('./models/customer'); // <-- var customers = require('./controllers/customer-server-controller');   module.exports = function(app) {      app.route('/api/customers')         .get(customers.list);         //.post(customer.create);  } 

customer-server-controller.js

var     mongoose = require('mongoose'); var     customer = mongoose.model('customer');  /**  * list of customers  */ exports.list = function(req, res) {      customer.find().sort('-created').exec(function(err, customers) {         if (err) {             return res.status(400).send({                 message: "error: " + err             });         } else {             res.jsonp(customers);         }     }); }; 

got portion of biolerplate this tutorial on scotch.io

i take you're missing model tutorial

you should have somewhere.

create models folder , add todo.js , add following:

 // define model =================     var todo = mongoose.model('todo', {         text : string     }); 

Comments