Определение массива как переменной среды в node.js
У меня есть массив, из которого я извлекаю данные.
festivals = ['bonnaroo', 'lollapalooza', 'coachella']
Поскольку я использую герою, может быть лучше заменить его на переменную среды, но я не уверен, как это сделать.
Использует ли строку JSON в качестве переменной среды путь?
Ответы
Ответ 1
В этом случае это не похоже на env var - путь.
Как правило, вы хотите использовать переменные среды, чтобы предоставить информацию о своем приложении об окружающей среде или настроить его поведение: к какой базе данных подключиться, какие токены использовать, сколько рабочих для вилки, независимо от того, и т.п.
Ваш пример больше похож на модель, поэтому что-то вроде базы данных, вероятно, лучше подходит.
Тем не менее, нет никакого контекста вокруг того, что делает ваше приложение или как он использует festivals
, поэтому, если окажется, что вы должны использовать env var, то у вас есть несколько вариантов. Простейшим является, вероятно, просто использовать пробел или запятую.
heroku config:set FESTIVALS="bonnaroo lollapalooza coachella"
тогда:
var festivals = process.env.FESTIVALS.split(' ');
раскрытие: я являюсь владельцем платформы Node.js в Heroku
Ответ 2
Вероятно, это зависит от ваших данных. Например, если ни одно из значений никогда не будет содержать запятую, вы можете просто сделать его разделенным запятой, а затем разбить на запятую (например, начать свое приложение с помощью FOO=bar,baz,quux node myapp.js
затем выполнить var foo = process.env.FOO.split(',')
в myapp.js
).
В противном случае, если ваши входные значения могут быть более сложными, JSON, вероятно, будет легче всего работать.
Ответ 3
Ваш пример выглядит больше перечисления, чем массив конфигурации. Я настоятельно рекомендую использовать модель, чтобы сохранить ее.
В случае, если вы ссылаетесь на приведенный выше массив просто в качестве примера, и вам более интересно узнать, как можно хранить массивы в файле env -
Краткий ответ: вы не можете.
Длинный ответ: переменные .env являются строками
BOOLEAN = true
будет рассматриваться как
BOOLEAN = "true"
и так будет
FESTIVALS = ['bonnaroo', 'lollapalooza', 'coachella']
рассматриваться как
FESTIVALS = "['bonnaroo', 'lollapalooza', 'coachella']"
Решение:
Вы можете сохранить массив в виде строки с разделителями в .env
FESTIVALS = "bonnaroo, lollapalooza, coachella"
В вашем файле JS вы можете преобразовать его в массив, используя
var festivals = process.env.FESTIVALS.split(",");