Beste Weg, um OOP im Express-REST-API?

Werde ich alle und mache ein Projekt mit nur Knoten. Es war eine Menge Spaß, aber manchmal bekomme ich ein wenig in ihn verloren und ich will versuchen, Verständnis zu erlangen, wie ich verwirrt, also Baue ich es korrekt und nicht zu sehr überfordert. Wie auch immer, hier ist das problem:

Habe ich REST-API, die mithilfe von Express und mysql. Ich richte mysql:

app.js

//Variables, move these to env
var dbOptions = {
    host: config.db_config.host,
    user: config.db_config.user,
    password: config.db_config.password,
    port: config.db_config.port,
    database: config.db_config.database
};
app.use(myConnection(mysql, dbOptions, 'single'));

und dann habe ich auch meine Routen, vorbei an den Routen der app und log-middleware, so kann ich Sie in der route:

app.js Forts.

var userRoute = require('./routes/users.js')(app,log);
app.use('/users', userRoute);

Dass war eigentlich ein wenig verwirrend, aber jetzt verstehe ich es, ich haben, Sie zu übergeben in Modul damit Sie das Modul, um die Daten abzurufen.

Dann im meine route-Datei, die ich möchte, ein Objekt zu verwenden, so dass ich verwenden können, die gleiche Funktionalität für andere Strecken, aber in der user-Datei um die gleiche connection pool, die alles andere, oder zumindest nicht erneut, die Verbindung herzustellen muss ich übergeben Sie es der Antwort und Anfrage? Es muss einen besseren Weg, das zu tun. Es ist wirklich unschön, die Art und Weise. Hier ist der relevante Teil

routes/users.js

var User = require('../controllers/User.js');

module.exports = (function(app,log) {
var userR = express.Router();

userR.post('/register', function(req,res){
        var email = req.body.email;
        var password = req.body.password;
        var firstName = req.body.first_name;
        var lastName = req.body.last_name;
        var userId;

        try {
            var query;
            var status = 200;
            var response = '';

            var newUser = {
                email: email,
                password:password,
                first_name: firstName,
                last_name: lastName,
                password: password
            };

            var user = new User(req,res);

            user.register(newUser);
...

};

controllers/User.js

module.exports = function User(req,res) {
this.id = 0;
    this.register = function(newUser){

        var _this = this;
        var deferred = q.defer();
req.getConnection(function(err,connection){
...

Muss es ein Muster sein, ich bin hier fehlen. Ich sollte nur in der Lage sein, um übergeben Sie die app oder sowas und haben Zugriff auf die erf.getConnection etc.

Dank.

InformationsquelleAutor PixMach | 2015-01-28
Schreibe einen Kommentar