web-dev-qa-db-ja.com

node.jsで環境変数として配列を定義する

データを取得する配列があります。

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

私はherokuを使用しているため、環境変数に置き換える方が良いかもしれませんが、その方法はわかりません。

JSON文字列を環境変数として使用していますか?

25
paranoidhominid

このシナリオでは、env varが道であるようには聞こえません。

通常、環境変数を使用して、環境に関するアプリケーション情報を提供したり、動作をカスタマイズしたりします。接続するデータベース、使用する認証トークン、フォークするワーカーの数、レンダリングされたビューをキャッシュするかどうか、等.

あなたの例はモデルに似ているので、おそらくデータベースのようなものがより適しています。

とは言っても、アプリの動作やfestivalsの使用方法に関するコンテキストはないため、env varを使用する必要があることが判明した場合、いくつかのオプションがあります。最も簡単な方法は、おそらくスペースまたはカンマ区切りの文字列を使用することです。

heroku config:set FESTIVALS="bonnaroo lollapalooza coachella"

その後:

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

開示:私はHerokuのNode.jsプラットフォームオーナーです

48
hunterloftis

それはおそらくあなたのデータに依存します。たとえば、値にコンマが含まれない場合は、コンマ区切りのリストにして、コンマで分割するだけです(たとえば、FOO=bar,baz,quux node myapp.jsでアプリを起動し、myapp.jsvar foo = process.env.FOO.split(',')を実行します)。

それ以外の場合、入力値がより複雑になる可能性がある場合は、JSONを使用するのがおそらく最も簡単です。

4
mscdex

あなたの例は、構成配列よりも列挙に見えます。モデルを使用して保存することを強くお勧めします。

上記の配列を単なる例として参照しており、配列を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(",");
3
Abhishek