Config File in NodeJS utilizzando npm config

Nov 11 2020

Ho un'applicazione SAAS on-cloud costruita su Angular / NodeJS / Postgres + stack MongoDB che può connettersi al database del cliente, ai magazzini cloud, ai bucket S3 ecc. Per caricare le informazioni. Una volta ottenute le informazioni di connessione dal front-end Angular, è necessario archiviare queste informazioni per il recupero futuro.

Example :
Angular Front-end
<form>
Database Type : 
Host : 
Port : 
Username: 
Password :

S3Bucket : 
Region :
bucket-name :
Access key :
</form>

eccetera.

Ho bisogno di queste informazioni salvate per un accesso successivo. Come suggerito da Abdullah Deliogullari nella domanda originale, sto cercando di utilizzare il modulo di configurazione npm config . Ma come faccio a utilizzare il pacchetto config per scrivere il file di configurazione e caricarlo in un'applicazione in esecuzione.

ad esempio, mentre la mia applicazione è in esecuzione, devo scrivere le informazioni sul bucket (ad esempio S3) in un file customer.config (dal frontend JSON) e successivamente, quando richiesto per recuperare i dati, utilizzare customer.config per connettersi al bucket S3.

La parte "get" che sono in grado di capire ma la parte di scrittura (aggiungendo dinamicamente una nuova sezione) è ciò che non sono in grado di capire.

Esempio dal frontend quando passo i valori come


 ["ct_postgres":
       {"host":"3.15.xxx.xxx", 
         "port":"5132",
         "dbname":"wcdb"     
      }]

questo dovrebbe essere scritto nel file di configurazione. Quindi sto cercando qualcosa come config.put / write. La prossima volta che voglio connettermi al cliente postgresdb faccio config.get () e mi fornisce i dettagli della connessione.

Domanda originale

Risposte

AbdullahDeliogullari Nov 11 2020 at 13:33

Per prima cosa dovresti installare questo pacchetto

npm install config

Dopo di che crea il file di configurazione nella directory del tuo progetto (il nome "config" è un must). In questo file creare i file development.json e production.json (questi nomi sono facoltativi). Il contenuto di development.json potrebbe essere così

{
  "SERVER" : {
     "port" : 5000
  },

  "PASSWORDHASH" : {
    "saltRounds" : 10
  }
}

Nel tuo file javascript ad esempio nel file app.js, prima dovresti includere la libreria, e poi puoi ottenere informazioni sulla configurazione tramite questo modulo

const config = require('config');
const port = config.get("SERVER.port");
app.listen(port);

L'ultimo passaggio dovrebbe essere l'aggiunta di questo nome file development.json alla variabile NODE_ENV

NODE_ENV=development node app.js

Quindi, se vuoi aggiornare il tuo file json in base ai nuovi dati provenienti dal tuo frontend, puoi farlo fondamentalmente

var fs = require('fs');
var file_content = fs.readFileSync("development.json");
var content = JSON.parse(file_content);
content.SERVER.port = 6000;
fs.writeFileSync("development.json", JSON.stringify(content));