Эмуляторы Firebase устанавливают цель базы данных

# #firebase #google-cloud-firestore #google-cloud-functions

Вопрос:

Установка

Я разрабатываю тестовый экземпляр Firestore, размещенный на firebase, и я хотел бы запустить firebase emulators:start таргетинг на эту базу данных. В настоящее время он нацелен на набор эмуляторов, доступных через localhost:4000 . В кодовой базе я инициализировал firebase экземпляр с параметрами для фактического экземпляра следующим образом:

 const fireAdmin = admin.initializeApp({
      credential   : admin.credential.applicationDefault() 
    , databaseURL  : DatabaseConfig['databaseURL']
    , storageBucket: DatabaseConfig['storageBucket']
});
 

где DatabaseConfig = { databaseURL: "https://mytestingserversite.firebaseio.com", ... } .

Проблема

Однако функции все еще записывают/считывают данные из экземпляра эмулятора. Это мой firebase.json :

 {
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "hosting": {
    "rewrites": [
      {
        "source": "**",
        "function": "app"
      }
    ]
  },
  "functions": {
    "source": "functions"
  },
  "emulators": {
    "functions": {
      "port": 5001
    },
    "firestore": {
      "port": 8080
    },
    "hosting": {
      "port": 5000
    },
    "ui": {
      "enabled": true
    }
  }
}
 

Я упускаю какую- env то переменную здесь?

Ответ №1:

Параметр databaseURL на самом деле здесь ничего не делает, так как он предназначен для указания URL-адреса базы данных в реальном времени.

Независимо от того, какой эмулятор вы на самом деле используете, вы можете опустить эмулятор Firestore, просто запустив нужные вам эмуляторы.

Например: firebase emulators:run --only functions,hosting

Это должно подсказать CLI использовать реальный экземпляр Firestore в облаке, а не эмулятор.