Как создать среду разработки с функциями FireStore & Cloud - PullRequest
0 голосов
/ 30 мая 2018

Я широко использую FireStore вместе с облачными функциями, и до сих пор все было замечательно.

Поскольку мое приложение Swift близится к запуску в производство, я хотел бы создать отдельную среду разработки.Основываясь на документации, я смог:

  • Создать два отдельных проекта
  • Связать эти два проекта с моими двумя целями, используя различные p-list GoogleService
  • Iтакже был в состоянии объявить 2 учетные записи службы для моих сред Firebase Function и создать два отдельных псевдонима.

Казалось, все это работает, за исключением того, что моя новая среда Dev Cloud Function не полностью связана с моим Dev FireStoreБД, но вместо этого по-прежнему связана с моим первоначальным экземпляром БД FireStore - облачная функция корректно срабатывает, когда я что-то пишу на нее, но все функции извлечения данных возвращают пустые (как если бы команды .get () предназначались для моего «старого» продукта)DB).

Не могли бы вы дать мне знать, как я могу "заставить" свою среду Dev Cloud Functions связаться с моим экземпляром Dev FireStore DB?Должно быть, я пропустил шаг - например, я не инициализировал CLI / повторно вошел в систему и т. Д., А только создал второй псевдоним.

Я также получаю это сообщение: «Платежная учетная запись не настроена. Внешняя сеть недоступна, а квоты строго ограничены. Настройте платежную учетную запись, чтобы снять эти ограничения».Это странно, поскольку я не использую внешнюю учетную запись (это только Firestore / Cloud Functions / FCM).

Любая документация / пошаговое руководство, на которое вы можете указать, было бы очень полезно!

Вот как я инициализирую свои 2 приложения:

const functions = require('firebase-functions');

const admin = require('firebase-admin');

var serviceAccount = require("./adminKey.json");
var serviceAccountDev = require("./adminKey-dev.json");

var secondEnvironment = admin.initializeApp({
  credential: admin.credential.cert(serviceAccountDev),
  databaseURL: "https://<app name>-dev.firebaseio.com"
}, 'dev instance');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://<app name>.firebaseio.com"
});

var db = admin.firestore();

Еще раз спасибо, Франсуа

1 Ответ

0 голосов
/ 30 мая 2018

Обновление на основе комментариев ниже и обновления вашего поста с частью кода функции облака, в которой вы инициализируете приложение:

Выполните следующие действия:

var secondEnvironment = admin.initializeApp({
  credential: admin.credential.cert(serviceAccountDev),
  databaseURL: "https://<app name>-dev.firebaseio.com"
}, 'dev instance');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://<app name>.firebaseio.com"
});

вы инициализируете приложение с параметрами среды Prod для двух сред .

Вы должны сделать, как описано в нижней части этого пункта документации: https://firebase.google.com/docs/functions/config-env#automatically_populated_environment_variables

, который:

Если вам нужно инициализировать Admin SDK с конфигурацией проекта по умолчанию, используя учетные данные учетной записи службы, вы можете загрузить учетные данные из файла и добавить их в FIREBASE_CONFIG следующим образом:

serviceAccount = require('./serviceAccount.json');

const adminConfig = JSON.parse(process.env.FIREBASE_CONFIG); adminConfig.credential = admin.credential.cert(serviceAccount); admin.initializeApp(adminConfig);

process.env.FIREBASE_CONFIG - это переменная среды, которая автоматически заполняется во время выполнения функции.


(Первоначальный ответ, больше не полностью соответствующий вашей конкретной проблеме ...)

Если я правильно понимаю, вам просто нужно использовать команду use в CLI,переключиться на цельПроект, для которого вы хотите развернуть свои облачные функции.Это в случае, если пользователь, с которым вы вошли в систему, управляет двумя проектами (dev и prod).

В случае, если два разных пользователя управляют двумя проектами, вы должны использовать команду logout, за которой следуетКоманда login, чтобы войти в систему с правильным пользователем (и, возможно, впоследствии использовать команду use, если пользователь управляет несколькими проектами).

См. Документацию здесь: https://firebase.google.com/docs/cli/#administrative_commands

...