Fichier de configuration dans NodeJS en utilisant npm config

Nov 11 2020

J'ai une application SAAS sur le cloud basée sur la pile Angular / NodeJS / Postgres + MongoDB qui peut se connecter à la base de données client, aux entrepôts cloud, aux compartiments S3, etc. pour charger des informations. Une fois que j'ai obtenu les informations de connexion du front-end angulaire, je dois stocker ces informations pour une récupération future.

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

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

etc.

J'ai besoin que ces informations soient enregistrées pour un accès ultérieur. Comme suggéré par Abdullah Deliogullari dans la question originale, j'essaie d'utiliser le module de configuration npm config . Mais comment utiliser la configuration du package pour écrire le fichier de configuration et le charger dans une application en cours d'exécution.

c'est-à-dire pendant que mon application est en cours d'exécution, je dois écrire les informations du compartiment (disons S3) dans un fichier customer.config (à partir de l'interface JSON) et plus tard, lorsque cela est nécessaire, pour récupérer des données, utilisez customer.config pour vous connecter au compartiment S3.

La partie «obtenir» que je suis capable de comprendre, mais la partie écriture (ajouter une nouvelle section dynamiquement) est ce que je ne suis pas capable de comprendre.

Exemple de frontend lorsque je passe des valeurs comme


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

cela doit être écrit dans le fichier de configuration. Donc quelque chose comme config.put / write que je recherche. La prochaine fois que je veux me connecter au client postgresdb, je fais config.get () et il me fournit les détails de connexion.

Question originale

Réponses

AbdullahDeliogullari Nov 11 2020 at 13:33

Vous devez d'abord installer ce package

npm install config

Ensuite, créez un fichier de configuration dans votre répertoire de projet (le nom "config" est indispensable). Dans ce fichier, créez les fichiers development.json et production.json (ces noms sont facultatifs). Le contenu de development.json pourrait être comme ça

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

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

Dans votre fichier javascript par exemple dans le fichier app.js, vous devez d'abord inclure la bibliothèque, puis vous pouvez obtenir des informations de configuration via ce module

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

La dernière étape devrait être d'ajouter ce nom de fichier development.json à la variable NODE_ENV

NODE_ENV=development node app.js

Donc, si vous souhaitez mettre à jour votre fichier json en fonction de nouvelles données provenant de votre frontend, vous pouvez essentiellement le faire

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));