2017-05-20 2 views
0

Ich möchte N-Werte in einer vorhandenen Datei durch Platzhalter ersetzen.nodeJS mehrere Werte in einer Datei ersetzen

Wenn eine Postanforderung in einer ExpressJS-Anwendung ausgelöst wird, müssen die Platzhalterwerte in einer Datei geändert werden.

Zum Beispiel der SASS-Datei:

$textColor: ##textColor##; 
$backgroundColor: ##backgroundColor##; 

Und meine Funktionalität, die mit 1 Ersatz funktioniert gut:

router.post('/', function(req, res) { 

    fs.readFile('main.scss', 'utf8', (err, data) => { 
     if(err) { 
      console.log('An error occured', err); 
     } 

     backgroundColorToReplace = data.replace(/##backgroundColor##/g, 
     req.body.backgroundColor); 
     // This value has to be replaced as well 
     textColorToReplace = data.replace(/##textColor##/g, req.body.textColor); 

     fs.writeFile('main.scss', backgroundColorToReplace, (err) => { 
      if(err) { 
       console.log('An error occured', err); 
      } 

      console.log('Colors successfully changed'); 
     }); 
    }); 

    res.json({ 
     textColor: req.body.textColor, 
     backgroundColor: req.body.backgroundColor 
    }); 
}); 

Wie kann ich dieses Problem lösen? Gibt es einen Weg?

+0

Beachten Sie auch, dass dies die 'textColor' und' backgroundColor' für alle zukünftigen Anfragen von allen zukünftigen Benutzern ändert. Ist das wirklich was du beabsichtigst? Oder soll das eine benutzerspezifische Einstellung sein? – jfriend00

+0

@ jfriend00 ja ich weiß. Es ist ein Testfall nur zum Spielen und Verstehen ein bisschen mehr über die Programmierung in NodeJS. – pkberlin

Antwort

3

Nun, Sie führen replace() nicht auf dem gleichen Datensatz aus, und Sie notieren nur die erste Änderung. JavaScript-Strings sind unveränderbar, so dass .replace() die ursprünglichen Daten nicht ändert. Versuchen Sie, den allgemeinen Datencontainer beizubehalten:

+0

Danke. das ist was ich suche :) – pkberlin

Verwandte Themen