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