Цель:
В настоящее время я пытаюсь настроить демонстрационную и демонстрационную среду для своего приложения. Я использую Google App Engine и развертываю для каждого из них другой URL-адрес и проект App Engine. Идея состоит в том, что каждый экземпляр подключается к своему собственному URL-адресу в зависимости от среды.
Проблема:
В настоящее время проблема заключается в том, что, хотя я вижу в журналах консоли, что приложения действительно получают правильные Переменные среды каждый экземпляр пытается читать и записывать в производственную базу данных.
Консоль даже регистрирует «Подключено к базе данных: демонстрация / подготовка в демонстрационной или промежуточной среде. Тем не менее я получаю коллекции и данные из рабочей базы данных.
Это не так для локального запуска приложения, когда оно подключается к промежуточной базе данных (переменная среды для NODE_ENV при локальном запуске не определена)
Код:
Мой рабочий экземпляр развертывается в проект движка приложения Google, использующий эту конфигурацию.
production.yaml
runtime: nodejs10
env: standard
instance_class: F1
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon.ico
- url: /static
static_dir: public
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
automatic_scaling:
min_idle_instances: 1
max_idle_instances: 3
min_instances: 1
min_pending_latency: automatic
max_pending_latency: automatic
network: {}
env_variables:
NODE_ENV: production
LOGIN_PAGE: https://login.myproductionurl.com/
API_ENDPOINT: https://myproductionurl.appspot.com/
PORT: 8080
Демонстрация и Staging имеют аналогичную настройку с изменением переменных среды, установленным для их дела.
demo.yaml
...
env_variables:
NODE_ENV: demo
LOGIN_PAGE: https://login.mydemourl.com/
API_ENDPOINT: https://mydemourl.appspot.com/
PORT: 8080
staging.yaml
...
env_variables:
NODE_ENV: staging
LOGIN_PAGE: https://login.mystagingurl.com/
API_ENDPOINT: https://mystagingurl.appspot.com/
PORT: 8080
В Express Затем я пытаюсь подключиться к другой базе данных MongoDB в Cloud Atlas на основе переменной среды.
Подключение к базе данных на сервере. js
if (process.env.NODE_ENV === "demo") {
console.log("Connecting to Database: Demo");
mongoose.connect(
"mongodb+srv://(myusername):(mypassword)@(myucluster).mongodb.net/demo",
{ useNewUrlParser: true }
);
} else if (process.env.NODE_ENV === "production") {
console.log("Connecting to Database: Production");
mongoose.connect(
"mongodb+srv://(myusername):(mypassword)@(myucluster).mongodb.net/production",
{ useNewUrlParser: true }
);
} else {
console.log("Connecting to Database: Staging");
mongoose.connect(
"mongodb+srv://(myusername):(mypassword)@(myucluster).mongodb.net/staging",
{ useNewUrlParser: true }
);
}
const db = mongoose.connection;
db.on("error", (error) => console.error(error));
db.once("open", () => console.log("connected to database"));
server.set("database", db);
Дополнительная информация:
Там нет подключений, указанных где-либо еще в проекте.