hmm: NodeJS server.js Datei aufräumen

Beitrag lesen

Hi Leute,

ich habe in meinem Node JS Projekt eine einzige server.js Datei die das gesamte Routing regelt. Weil diese Datei immer unsauberer aussieht möchte ich diese jetzt aufräumen. Sollte ich die einzelnen "sendFile"-Funktionen in unterschiedliche Datein packen? Habt ihr eine Idee wie ich den folgenen Code Step bei Step übersichtlicher gestalten kann? Welche Regeln sollte ich umsetzen, wenn ich den code übersichtlicher haben möchte? Ich dachte auch daran mir ein JavaScript Objekt für die Datenbank zu schreiben, leider weiß ich nicht wie man ein solches Objekt sinnvoll anlegt, bzw. ob ein solches Objekt SQL Querys als String kriegen sollte oder ob es nur parameter kriegen sollte.

var express = require('express');
var session = require('express-session');
var app = express();
var myParser = require("body-parser");

app.use(myParser.urlencoded({extended : true}));
app.use(session({
    secret: '2C44-4D44-WppQ38S',
    resave: true,
    saveUninitialized: true
}));

//Specify a port
var port = process.env.port || 8080;

//Serve up files
app.use("/ressourcen",  express.static(__dirname + '/ressourcen'));
app.use("/js", express.static(__dirname + '/js'));
app.use("/pivottable", express.static(__dirname + '/pivottable'));

app.get('/', function(req, res){
    res.sendfile('main.html', { root: __dirname + "/html" } );
});

app.get('/registrieren', function(req, res) {
    res.sendfile('registrieren.html', { root: __dirname + "/html" } );
});

app.get('/datenschutz', function(req, res) {
    res.sendfile('datenschutz.html', { root: __dirname + "/html" } );
});

app.get('/einstellungen', function(req, res) {
    if(req.session.email) {
        res.sendfile('einstellungen.html', { root: __dirname + "/html" } );
    } else {
         res.sendfile('main.html', { root: __dirname + "/html" } );
    }
});

app.get('/team', function(req, res) {
    if(req.session.email) {
        res.sendfile('team.html', { root: __dirname + "/html" } );
    } else {
         res.sendfile('main.html', { root: __dirname + "/html" } );
    }
});

app.get('/mitarbeiter', function(req, res) {
    if(req.session.email) {
        res.sendfile('mitarbeiter.html', { root: __dirname + "/html" } );
    } else {
         res.sendfile('main.html', { root: __dirname + "/html" } );
    }
});

app.get('/kontakt', function(req, res) {
    res.sendfile('kontakt.html', { root: __dirname + "/html" } );
});

app.get('/dashboard', function(req, res) {
    if(req.session.email) {
        res.sendfile('/pivottable/examples/d3.html', { root: __dirname + "/" } );
    } else {
         res.sendfile('main.html', { root: __dirname + "/html" } );
    }
});

app.post('/login', function(req, res){
    var sqlite3 = require('sqlite3').verbose();
    var db = new sqlite3.Database('skills.db');

    db.each("select count(*) as count from user_info where email='" + req.body.email + "' and passwort='" + 
        req.body.password + "'", function(err, row) {
        if(row.count == 1) {
            req.session.email = req.body.email;
            res.sendfile('/pivottable/examples/d3.html', { root: __dirname + "/" } );
        } else {
            res.sendfile('mainFail.html', { root: __dirname + "/html" } );
        }
    });
    
    db.close();
});

app.get('/logout', function (req, res) {
  req.session.destroy();
  res.sendfile('main.html', { root: __dirname + "/html" } );
});

app.get('/getSkillData', function (req, res) {
    if(req.session.email) {
        var sqlite3 = require('sqlite3').verbose();
        var db = new sqlite3.Database('skills.db');

        var data = db.all("SELECT skill as skill,subskill as subskill, name as name, nivau as nivau FROM skill_data where email='" 
            + req.session.email + "' order by name, skill, subskill", function(err, rows) {
            res.type('json');
            res.send(rows);
        });
        db.close();
    }
});

app.post('/saveSkillData', function(req, res) {
    if(req.session.email) {
        var sqlite3 = require('sqlite3').verbose();
        var db = new sqlite3.Database('skills.db');
    
        db.serialize(function() {
            db.run("delete from skill_data where email = '" + req.session.email + "'");
        });
        
        for(var i = 0; i < req.body.arr.length; i++) {
            if(req.body.arr[i].skill.trim() != "" && req.body.arr[i].subskill.trim() != "" && req.body.arr[i].name.trim() != "" && req.body.arr[i].nivau.trim() != "") {
                db.serialize(function() {
                    db.run("INSERT into skill_data(email, skill, subskill, NAME, nivau) VALUES ('"
                    + req.session.email + "', '" 
                    + req.body.arr[i].skill + "', '"
                    + req.body.arr[i].subskill + "', '"
                    + req.body.arr[i].name + "', '"
                    + req.body.arr[i].nivau
                    + "')");
                });
            }
        }
        db.close();
    }
});

app.post('/registrieren', function(req, res) {
    var sqlite3 = require('sqlite3').verbose();
    var db = new sqlite3.Database('skills.db');

    db.serialize(function() {
        db.run("INSERT into user_info(anrede, vorname, nachname, email, passwort) VALUES ('"
        + req.body.Anrede + "', '" 
        + req.body.Vorname + "', '"
        + req.body.Nachname + "', '"
        + req.body.Email + "', '"
        + req.body.Pass
        + "')");
    });
    
    db.close();
    res.sendfile('registrierenRueckmeldung.html', { root: __dirname + "/html" } );
});

app.post('/regDatenAendern', function(req, res) {
    if(req.session.email) {
        var sqlite3 = require('sqlite3').verbose();
        var db = new sqlite3.Database('skills.db');
    
         db.serialize(function() {
            db.run("delete from user_info where email = '" + req.session.email + "'");
        });
    
        db.serialize(function() {
            db.run("INSERT into user_info(anrede, vorname, nachname, email, passwort) VALUES ('"
            + req.body.Anrede + "', '" 
            + req.body.Vorname + "', '"
            + req.body.Nachname + "', '"
            + req.body.Email + "', '"
            + req.body.Pass
            + "')");
        });
        
        db.close();
        res.send("Das ändern Ihrer Daten war erfolgreich.");
     } else {
          res.sendfile('main.html', { root: __dirname + "/html" } );
     }
});

app.post('/regLoeschen', function(req, res) {
    if(req.session.email) {
        var sqlite3 = require('sqlite3').verbose();
        var db = new sqlite3.Database('skills.db');
    
         db.serialize(function() {
            db.run("delete from user_info where email = '" + req.session.email + "'");
        });
    
        db.close();
        res.send("Ihr Account wurde gelöscht..");
    } else {
         res.sendfile('main.html', { root: __dirname + "/html" } );
    }
});

app.post('/mail', function (req, res) {
	// hier verschicken wir die email
	var nodemailer = require('nodemailer');
    
    var transporterObjectConfig = nodemailer.createTransport({
    host: 'egergrgrgrgr',
    port: '587',
    secure: false,
    requireTLS: true,
    auth: {
    user: 'egrergregrgr',
    pass: 'gergergergergr'
    }
    });
    
	var mailOptions = {
        from: req.body.email, // sender address
        to: 'xxx', // list of receivers
        subject: 'Kontaktanfrage', // Subject line
        text: req.body.message, 
        html: req.body.message 
    };

    transporterObjectConfig.sendMail(mailOptions, function(error, info){
        if(error){
            return console.log(error);
        }
        res.sendfile('kontaktRueckmeldung.html', { root: __dirname + "/html" } );
    });
});


//Start up the website
app.listen(port);
console.log('Listening on port: ', port);