Comment séparer les routes et les modèles de app.js à l'aide de NodeJS et de l'Exprimer

Je suis de la création d'une application à l'aide d'un Noeud et de l'Exprimer. Cependant, je peux voir ça va vite devenir difficile à gérer toutes les routes qui sont placés à l'intérieur app.js. J'ai placé tous mes modèles dans un sous-répertoire /models.

Voici mon application actuelle de la structure:

app.js
models
  -- products
  -- customers
  -- ...
public
views
node_modules

Dans app.js:

var express = require('express'),
    routes = require('./routes'),
    user = require('./routes/user'),
    http = require('http'),
    path = require('path'),
    EmployeeProvider = require('./models/employeeprovider').EmployeeProvider,
    Products = require('./models/products').Products,
    Orders = require('./models/orders').Orders,
    Customers = require('./models/customers').Customers,
    checkAuth = function(req, res, next) {
      if (!req.session.user_id) {
        res.send('You are not authorized to view this page');
      } else {
        next();
      }
    };

var app = express();

Puis un peu de configuration comme port, views annuaire, moteur de rendu, etc.

Plus bas app.js j'ai les routes:

app.get('/product/edit', auth, function(req, res) {
  Products.findAll(function(error, prds) {
    res.render('product_edit', {
      title: 'New Product',
      products: prds
    });
  });
});

En haut, je suis d'assigner le contenu de models/products.js à une variable, tout fonctionne très bien. Toutefois, en gardant toutes les routes à l'intérieur de app.js n'est pas l'idéal. Mais si je déplace les routes de routes/product.js et de la charge de la Products modèles:

var prod = require('../models/products.js');

Je reçois un message d'erreur indiquant que l'objet n'a pas de méthode findAll.

Ce que je fais mal? Comment puis-je supprimer des itinéraires à partir de app.js?