我有一个从中提取数据的数组。
festivals = ['bonnaroo', 'lollapalooza', 'coachella']
因为我使用的是heroku,所以用环境变量替换它可能更好,但我不确定如何做。
使用JSON字符串作为环境变量是否可行?
sxissh061#
在这种情况下,使用env var听起来并不合适。通常,您希望使用环境变量为应用程序提供有关其环境的信息或自定义其行为:连接到哪个数据库、使用哪个授权令牌、分叉多少工作者、是否高速缓存所呈现的视图等。您的示例看起来更像是一个模型,因此类似于数据库的东西可能更适合。也就是说,你的应用做什么或如何使用festivals并没有上下文,所以如果你确实应该使用env var,那么你有几个选择,最简单的可能是使用空格或逗号分隔的字符串:
festivals
heroku config:set FESTIVALS="bonnaroo lollapalooza coachella"
然后:
var festivals = process.env.FESTIVALS.split(' ');
yvt65v4c2#
你的例子看起来更像一个枚举而不是配置数组。我强烈推荐使用一个模型来保存它。如果你只是把上面的数组作为一个例子来引用,并且对数组如何存储在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(", ");
结果会是
['bonnaroo', 'lollapalooza', 'coachella']
jjhzyzn03#
Use JSON (The Best Way 💪🎃)
定义:
ANY_LIST = ["A", "B", "C"]
解析:
const LIST = JSON.parse(process.env.ANY_LIST);
用途:
console.log(Array.isArray(LIST)); // true consloe.log(LIST[2]); // "C"
ryoqjall4#
简短回答:是的,你可以!虽然.env变量是字符串,但您可以将其解析为数组
2种方法是:1.JSON语法分析()
YOUR_ENV = ["A", "B", "C"] # in your .env file const envs = JSON.parse(process.env.YOUR_ENV); // in your app file
2.拆分()
YOUR_ENV = "A, B, C" const envs = process.env.YOUR_ENV.split(", ");
krcsximq5#
这可能取决于您的数据,例如,如果所有值都不包含逗号,您可以将其设为逗号分隔列表,然后在逗号处拆分(例如,以FOO=bar,baz,quux node myapp.js启动应用,然后在myapp.js中执行var foo = process.env.FOO.split(','))。否则,如果您的输入值可能更复杂,JSON可能是最容易使用的。
FOO=bar,baz,quux node myapp.js
myapp.js
var foo = process.env.FOO.split(',')
jum4pzuy6#
请注意,当您需要一个长列表时,启用多行模式也很有用:
const env = require('dotenv').config({ multiline: 'line-breaks' })
https://github.com/motdotla/dotenv/commit/0a9332ff70f5121c1221d5c32839a759c60cb879完整示例:x一个一个一个一个x一个一个二个x
6条答案
按热度按时间sxissh061#
在这种情况下,使用env var听起来并不合适。
通常,您希望使用环境变量为应用程序提供有关其环境的信息或自定义其行为:连接到哪个数据库、使用哪个授权令牌、分叉多少工作者、是否高速缓存所呈现的视图等。
您的示例看起来更像是一个模型,因此类似于数据库的东西可能更适合。
也就是说,你的应用做什么或如何使用
festivals
并没有上下文,所以如果你确实应该使用env var,那么你有几个选择,最简单的可能是使用空格或逗号分隔的字符串:然后:
yvt65v4c2#
你的例子看起来更像一个枚举而不是配置数组。我强烈推荐使用一个模型来保存它。
如果你只是把上面的数组作为一个例子来引用,并且对数组如何存储在env文件中更感兴趣-
简短回答:"你不能“
长回答:.env变量是字符串所以类似于
将被视为
也会如此
被当作
解决方案:
您可以将数组另存为.env中的分隔字符串
在js文件中,可以使用以下命令将其转换为数组
结果会是
jjhzyzn03#
Use JSON (The Best Way 💪🎃)
定义:
解析:
用途:
ryoqjall4#
简短回答:是的,你可以!
虽然.env变量是字符串,但您可以将其解析为数组
2种方法是:
1.JSON语法分析()
2.拆分()
krcsximq5#
这可能取决于您的数据,例如,如果所有值都不包含逗号,您可以将其设为逗号分隔列表,然后在逗号处拆分(例如,以
FOO=bar,baz,quux node myapp.js
启动应用,然后在myapp.js
中执行var foo = process.env.FOO.split(',')
)。否则,如果您的输入值可能更复杂,JSON可能是最容易使用的。
jum4pzuy6#
请注意,当您需要一个长列表时,启用多行模式也很有用:
https://github.com/motdotla/dotenv/commit/0a9332ff70f5121c1221d5c32839a759c60cb879
完整示例:
x一个一个一个一个x一个一个二个x