web-dev-qa-db-fra.com

Définition d'un tableau en tant que variable d'environnement dans node.js

J'ai un tableau dont je tire les données. 

festivals = ['bonnaroo', 'lollapalooza', 'coachella']

Depuis que j'utilise heroku, il peut être préférable de le remplacer par une variable d'environnement, mais je ne sais pas comment faire.

L'utilisation d'une chaîne JSON en tant que variable d'environnement est-elle la solution?

19
paranoidhominid

Dans ce scénario, cela ne semble pas être une solution env.

En général, vous souhaiterez utiliser des variables d’environnement pour donner à votre application des informations sur son environnement ou pour personnaliser son comportement: la base de données à laquelle se connecter, les jetons d’authentification à utiliser, le nombre de travailleurs à fourcher pour mettre en cache les vues rendues etc.

Votre exemple ressemble davantage à un modèle, une base de données est donc probablement plus adaptée.

Cela dit, il n'y a pas de contexte pour ce que votre application fait ou comment elle utilise festivals. Par conséquent, s'il s'avère que vous devez utiliser une variable env, vous avez alors plusieurs options. Le plus simple est probablement d'utiliser une chaîne ou un espace délimité par des virgules:

heroku config:set FESTIVALS="bonnaroo lollapalooza coachella"

puis:

var festivals = process.env.FESTIVALS.split(' ');

divulgation: je suis le propriétaire de la plateforme Node.js chez Heroku

40
hunterloftis

Cela dépend probablement de vos données. Par exemple, si aucune des valeurs ne contient jamais de virgule, vous pouvez simplement en faire une liste séparée par des virgules, puis divisée en virgule (par exemple, en démarrant votre application avec FOO=bar,baz,quux node myapp.js puis en faisant var foo = process.env.FOO.split(',') dans myapp.js).

Sinon, si vos valeurs d'entrée peuvent être plus complexes, JSON sera probablement le plus facile à utiliser.

3
mscdex

Votre exemple ressemble plus à une énumération qu'à un tableau de configuration. Je recommande fortement d'utiliser un modèle pour le sauvegarder.

Si vous vous référez au tableau ci-dessus à titre d’exemple et êtes plus curieux de savoir comment les tableaux peuvent être stockés dans un fichier env -

Réponse courte: Vous ne pouvez pas.

Réponse longue: .env les variables sont des chaînes Donc, quelque chose comme 

BOOLEAN = true

sera traité comme 

BOOLEAN = "true"

et ainsi

FESTIVALS = ['bonnaroo', 'lollapalooza', 'coachella'] 

être traité comme 

FESTIVALS = "['bonnaroo', 'lollapalooza', 'coachella']"

Solution:

Vous pouvez enregistrer le tableau en tant que chaîne délimitée au format .env

FESTIVALS = "bonnaroo, lollapalooza, coachella"

Dans votre fichier js, vous pouvez le convertir en tableau en utilisant

var festivals = process.env.FESTIVALS.split(",");
0
Abhishek