简单来说,我应该如何在lp4应用上实现在开发和生产之间切换。
我添加了数据源,并且一切正常,但这是一个.json文件。如何切换到保存在.env文件中的其他配置,可以通过dotenv程序包读取该配置。
我尝试手动创建数据源对象,但是遇到错误,因此很可能我的方法是错误的。任何建议将不胜感激。
答案 0 :(得分:2)
LoopBack小组的您好
LoopBack不支持现成的dotenv。
如果要将特定于环境的配置保留在文件中,则应将生产配置放置到server/datasources.production.json
,然后将环境变量NODE_ENV
设置为production
。 LoopBack正在启动时读取server/datasources.${NODE_ENV}.json
,并在server/datasources.json
中指定的默认配置之上应用该文件的所有替代。
话虽如此,我们认为最好使用https://12factor.net并通过环境变量提供生产配置。我想这也是您想要实现的目标?
也许您正在寻找一种方法来从环境变量配置数据源? LoopBack在某些配置文件中支持变量替换,其中datasources.json
受支持。例如:
{
"db": {
"connector": "mysql",
"database": "${MYSQL_DB}",
"username": "${MYSQL_USER},
"password": "${MYSQL_PASSWORD}"
}
特别是在数据源方面,我们建议使用一种略有不同的方法:
server/datasources.json
,host
,database
等数据源配置选项在username
文件中指定本地开发使用的连接设置。url
属性设置为环境提供的值。url
属性会覆盖所有其他设置,但在不存在时会被静默忽略。示例数据源配置:
{
"db": {
"connector": "mysql",
"database": "demo",
"username": "demo",
"password": "L00pBack"
"url": "${MYSQL_URL}"
}
在生产环境中运行时,可以如下设置连接字符串:
export MYSQL_URL=mysql://prod:strong-password@localhost/realdb
请参阅我们较早的博客文章https://strongloop.com/strongblog/managing-loopback-configurations-the-twelve-factor-way/,以了解更多详细信息。