Как я могу параметризовать вызов API Firebase в закрытии? - PullRequest
0 голосов
/ 10 июля 2020

Я использую облачные функции Firebase для синхронизации c моей базы данных Firestore со сторонней базой данных. Поскольку мои облачные функции используют вызовы стороннего API, я хочу параметризовать вызов api в качестве входных данных для использования внедрения зависимостей во время тестирования. Единственный способ, которым я могу это сделать, - это просто поместить облачную функцию в обычную функцию, то есть:

function foo(apiCall = api) {
  exports.bar = 
      functions.firestore.document(doc_name).onCreate(snapshot => apiCall(snapshot));
  return exports.bar
}
foo();

Когда я пытаюсь развернуть с помощью firebase deploy --only functions, мне говорят, что firebase не видит функции, существующие в локальном исходном коде.

Я дополнительно пробовал что-то вроде безрезультатного:

function foo(apiCall = api) {
  return functions.firestore.document(doc_name).onCreate(snapshot => apiCall(snapshot));
}
exports.bar = foo();

Когда я помещаю exports.bar вне функции, он развертывается нормально .

Я впервые использую Firebase, поэтому я не слишком знаком с синтаксисом и тому подобным, но я не знаю, почему упаковка облачной функции с помощью обычной функции не работает - есть предложения?

1 Ответ

1 голос
/ 10 июля 2020

То, что вы пытаетесь сделать, невозможно. Экспорт должен быть определен статически на верхнем уровне index. js, чтобы интерфейс командной строки мог их найти и развернуть. Их нельзя динамически экспортировать с помощью функции.

...