2016-04-01 6 views
0

Ich habe einen Endpunkt, der eine Datei für den Benutzer zum Herunterladen auf der Grundlage der Auswahl des Benutzers auf der Webseite dient. Basierend auf den Möglichkeiten der Benutzerauswahl ist die einzige Möglichkeit, dies zu berücksichtigen, die Verwendung von if/else-Anweisungen.bessere Methode für die Bereitstellung von Dateien auf dem Server NodeJS anstelle von If/Else

router.post('/process', function(req, res) { 
    if(req.query.os == 'Windows' && req.query.rec == 'Computer Information' && req.query.report == 'Local Report') { 
     res.send('http://localhost:3033/proc/windows/info/local/files.zip'); 
    } else if (req.query.os == 'Windows' && req.query.rec == 'User Information' && req.query.report == 'Local Report') { 
     res.send('http://localhost:3033/proc/windows/uinfo/local/files.zip'); 
    } 
} 

Wenn ich hinzufügen Optionen für Linux oder OSX, müssen schlecht für diejenigen berücksichtigen, wie gut und als Ergebnis wird der Code sehr lang und hässlich geworden. Gibt es einen besseren Weg, dies zu erklären?

Antwort

0

Sie könnten Ihre Variablen in url Teile übersetzen. Es wird einfacher zu pflegen sein. Zum Beispiel:

router.post('/process', function(req, res) { 
    var url_parts = { 
     'os' : { 
      'Windows' : 'windows', 
      'Linux' : 'linux', 
      'OSX' : 'mac' 
     }, 
     'rec' : { 
      'Computer Information' : 'info', 
      'User Information' : 'uinfo' 
     }, 
     'report' : { 
      'Local Report' : 'local', 
      'Global Report' : 'global' 
     } 
    }; 

    res.send(
     'http://localhost:3033/proc/' 
     + url_parts.os[req.query.os] 
     + '/' + url_parts.rec[req.query.rec] 
     + '/' + url_parts.report[req.query.report] 
     + '/files.zip' 
     ); 
}); 
Verwandte Themen