如何解决将RedisDB与Express-Gateway一起使用如何从.ENV中读取数据库凭据?
我正在使用Redis数据库在Heroku上使用express-gateway。 我想知道如何将Redis凭证设置为唯一的URL参数,而不是使用 分离的变量。
现在,Express Gateway从文件system.config.yml
中读取凭据,其中凭据结构为
# Core
db:
redis:
host: [host]
port: [port]
namespace: [namespace]
password: [password]
不幸的是,Heroku上的Redis会自动以URL的形式将凭据设置为.ENV变量:
REdis_URL = "redis://h:[psw]@[host]:[port]"
如何使express-gateway从.ENV而不是system.config.yml
读取凭据?或者,如何使system.config.yml
从.ENV读取整个URL?
甚至更糟的是,凭据不是永久的,并且会定期更改而不会发出警报。 那么,如何使express-gateway连接到Heroku上的Redis?
谢谢
解决方法
Express Gateway的配置文件support environment variables-检查一下,您应该就可以了!
,我以这种方式解决:在启动网关之前先拆分Var,然后设置Env变量。
/* ==============
server.js
================*/
const gateway = require('express-gateway');
const redis = require('redis')
const session = require('express-session')
let RedisStore = require('connect-redis')(session)
require('dotenv').config();
var redis_Url = process.env.REDIS_URL; // auto-stetted by the Redis Heroku Plugin
// example: redis://h:p81efd4c7e0ad310d7da303b7bd348d3d0bd9fcebc7aae61c9ba7c94a95a1290d@ec2-54-247-152-80.eu-west-1.compute.amazonaws.com:12799
var groups = /^redis:\/\/(.+?)\:(.+?)\@(.+?)\:(.+)$/gi.exec(redis_Url);
process.env.NM = groups[1];
process.env.PASW = groups[2];
process.env.HOST = groups[3];
process.env.R_PORT = groups[4]; // !!! don't use PORT as Env var name!!!
// Run the gateway
gateway()
.load(path.join(__dirname,'config'))
.run();
和
#==============
# system.config.yml
#================
# Core
db:
redis:
host: ${HOST}
port: ${R_PORT}
namespace: EG
password: ${PASW}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。