猿问

是否可以使用 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"


我将不胜感激任何指点。


谢谢!


繁星淼淼
浏览 72回答 1
1回答

手掌心

spf13/viper主要使用mapstructure包在一个原生Go类型到另一个原生Go类型之间进行转换,即在取消封送处理时。您需要定义一个注记,该注记将导致任何未使用的值进入此映射。有一个选项可以收集此类提醒值。您需要修改映射以将接口作为CustomerDB&nbsp;&nbsp;map[string]interface{}&nbsp;`mapstructure:",remain"`这会将所有字段值作为接口类型收集到映射中,您可以键入 assert 以获取所需的字符串值。DB_*
随时随地看视频慕课网APP

相关分类

Go
我要回答