La meilleure façon de stocker DB config Node.Js / Express app
Quel serait le meilleur moyen de conserver la config DB (nom d'utilisateur, mot de passe) dans un open source application qui s'exécute sur node.js /Express? Deux questions spécifiques:
-
Est je l'ai mis dans un autre config.js fichier dans
/lib
dossier, par exemple, et de ne jamais l'inclure dans le référentiel maître, qui est publiquement disponible sur GitHub? -
Pour les suivants de la config, est-ce aussi simple que de
require('./config.js')
du fichier qui doit il ou est-il une meilleure façon de le faire?
PS désolé si les questions semblent un peu simple et pas si bien formulé, mais je viens juste de commencer 🙂
Vous devez vous connecter pour publier un commentaire.
Pas sûr de savoir si c'est la meilleure pratique, mais personnellement j'ai un
config.json
fichier où je stocke mes informations de connexion à la db. Puis-je effectuer les opérations suivantes:Puis à partir d'un autre fichier je ne les suivants:
Error: ENOENT, no such file or directory './config.json'
. Cette solution a fonctionné pour moi quand j'ai changé deconfigPath = './config.json'
àconfigPath = __dirname + '/config.json'
dansoptions.js
. Voir @loganfsmyth commentaire ici: stackoverflow.com/questions/13541948/...Voici comment je le fais:
Créer un config.js qui contient des objets représentant vos configs:
Ensuite dans mon index.js (ou partout où vraiment),
Puis de traiter avec cet objet, par exemple
Pour l'exécution de jouet applications où j'ai besoin de cacher db informations d'identification, j'utilise le module dotenv.
Placez vos informations sensibles dans un .fichier de configuration (qui est .gitignored), place
require('dotenv').config();
dans votre application; dotenv crée les entrées enprocess.env
que vous pouvez consulter..env
fichier:De se référer aux valeurs:
Je dois mettre dans args. tout comme le port de tant de node.js exemple.
vous avez probablement jamais, pm2, nodemon pour exécuter votre application. de sorte que cette variable n'est pas enregistrer en tant que partie de votre code source. et ils sont disponibles dans le monde aussi.
export PORT=3306
C'est le bon moyen de stocker des fichiers de configuration.
La meilleure approche serait d'écrire la totalité de votre application comme un ordinaire node.js module, et à écrire un petit fichier de démarrage qui l'appelle. Cette idée aussi de vous permettre d'utiliser les différents pilotes de base de données à l'aide de l'injection de dépendance.
Bon, mais pas de solution parfaite, c'est l'environnement. Il est partagé entre toutes les applications, donc si vous avez des données que vous souhaitez rendre disponibles à tous, c'est le meilleur pari. Mais si vous avez une config pour une application particulière, pas beaucoup.
PS: Et s'il vous plaît, ne pas utiliser JSON pour cela. C'est la pire idée possible. 🙂
Je l'ai trouvé une belle façon de gérer ma config, en tenant compte des différents environnements:
config.café
serveur.café: