我有一个问题。在我的Host / cloud解决方案中,我必须按照“在其“环境变量”中定义的方式”使用每个国家/地区的定价环境变量。
BASIC_PRICE_FR_PRODUCT = "50";
COMPLEX_PRICE_FR_PRODUCT = 100;
BASIC_PRICE_UK_PRODUCT = "37";
COMPLEX_PRICE_UK_PRODUCT = "200";
BASIC_PRICE_ES_PRODUCT = "75";
COMPLEX_PRICE_ES_PRODUCT = "300";
我可以访问使用process.env.XXX的用户,例如process.env.BASIC_PRICE_FR
您看到这些环境变量取决于国家/地区,因为一个国家/地区与另一个国家之间的价格不同。
在我们的node.js应用程序中,挑战在于,执行一个函数时,它会自我了解国家/地区,因此,我们可以(必须)使用“当前”国家/地区和当前country_iso_code(“ fr”代表例如),与此同时,我们必须使用与该国家/地区匹配的定价。
在阅读了有关“动态变量名称”的一些文章之后,我尝试了如下所示的eval,global []和window [],但是没有任何作用,并且所有输出都为“ undefined”值
//note: iso_code_3166_we_can_use is something passed to the function by the final user or by some other lambda in the function context.
const current_country_iso_code_uppercase = iso_code_3166_we_can_use;
const basicPrice = parseInt( "process.env.BASIC_PRICE_" + current_country_iso_code_uppercase + "_PRODUCT")
console.log(basicPrice)//bug here as outputs "undefined"
编辑
使用process.env ['xxx']的建议无效,因此我在此处添加了结果
console.log(process.env.BASIC_PRICE_FR_PRODUCT);//outputs 50
console.log('BASIC_PRICE_' + iso_code_uppercase + '_PRODUCT' );//just to be sure :): outputs BASIC_PRICE_FR_PRODUCT
console.log( process.env['BASIC_PRICE_' + iso_code_uppercase + '_PRODUCT'] );// DOES NOT WORK, outputs undefined
答案 0 :(得分:4)
使用[]
动态访问对象的属性:
var country = 'FR'
var price = process.env['BASIC_PRICE_' + country + '_PRODUCT']
答案 1 :(得分:-1)
//Create an empty dictionary,
var process_env_dict = {};
process_env_dict['env'] = process.env;
//then you can access it with the below statement as you expected
var result = JSON.parse(JSON.stringify(process_env_dict))['env']['BASIC_PRICE_' + country + '_PRODUCT'];