Arquitetura de aplicativo baseada em mangusto

Esta não é uma questão concreta de aplicativo / código, é apenas sobre arquitetura de aplicativo comum.

Estou tentando entender a maneira correta de organizar meu aplicativo mangusto. Como sou novo no mangusto, é assim que faço agora:

core / settings.js

var mongoose = require('mongoose');
exports.mongoose = mongoose;
mongoose.connect('mongodb://localhost/blog');
exports.db = mongoose.connection;

core / models.js

settings = require("./settings");

// post schema
var postSchema = settings.mongoose.Schema({
    header: String,
    author: String,
    text: String
})

//compiling our schema into a Model 
exports.post = settings.mongoose.model('post', postSchema)

core / db-layer.js

settings = require("./core/settings");
models = require("./core/models");

exports.function = createAndWriteNewPost(function(callback) {
    settings.db.on('error', console.error.bind(console, 'connection error:'));
    settings.db.once('open', function callback() {
        new models.post({
            header: 'header',
            author: "author",
            text: "Hello"
        }).save(function(err, post) {
            callback('ok');
        });
    });
});

routes / post.js

db = reqiure("../core/db.js")

exports.get = function(req, res) {
    db.createAndWriteNewPost(function(status){
    res.render('add_material', {
      //blah blah blah        
        });
    });
};

app.js

var post = require ('routes/post.js')
...
app.get('/post', post.get);

Então, este código foi extremamente simplificado (mesmo não testado) apenas para mostrar meus pensamentos atuais de arquitetura. Não é um aplicativo concreto, apenas algo como criar uma postagem de blog abstrata. Então é assim que funciona:

app.js --> routes/post.js <--> core/db-layer.js
                                   |
                                   v
                               core/models.js <--> core/settings.js

Parece um pouco supérfluo para mim. Você poderia sugerir uma estrutura de aplicativo mais ideal? Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion