是否可以使用Viper将env值的前缀列表映射到映射中



我有一个当前格式的dotenv文件

KEY_PATH=/keys
LOG_LEVEL=WARNING
DB_CUSTOMER1=dbone
DB_CUSTOMER2=dbtwo

我还有一个形式的结构

type MyConfiguration struct {
KeyPath           string            `mapstructure:"KEY_PATH"`
CustomerDB map[string]string `<???>`
LogLevel          string            `mapstructure:"LOG_LEVEL"`
}

我正在寻找一种方法,无法找到一种可以手动(例如:向Viper询问所有前缀为DB_的键,然后自己设置(或自动(但Viper似乎没有办法以这种方式提取键/值(将作为DB_CUSTOMER1=val的配置键映射到"CUSTOMER1": "val"形式的映射的方法。

如果有任何建议,我将不胜感激。

谢谢!

spf13/viper主要使用mapstructure包在一种本机Go类型之间转换为另一种,即在取消封送处理时。您需要定义一个注释,该注释会导致此映射中出现任何未使用的值。可以选择收集此类提醒值。您需要修改地图以将界面作为

CustomerDB  map[string]interface{} `mapstructure:",remain"`

它会将所有DB_*字段值作为接口类型收集到映射中,您可以键入assert来获得所需的字符串值。

最新更新