2016-09-11 2 views
1

Пробовал каждый подход, о котором я могу думать часами.Невозможно уничтожить соединения Firebase, из-за которых происходит горячее Lambda из-за «имени приложения Firebase» [DEFAULT] «уже существует»

В основном я запускаю функцию AWS Lambda, которая выполняет некоторую работу с моим приложением Firebase как на роли клиента, так и на сервере.

Будучи на лямбда, мне нужно иметь возможность обратного преобразования firebase.initializeApp(config) и firebase.initializeApp(config, 'server'). Я пробовал firebase.app('server').delete(), но это не работает.

Заранее благодарим за любую помощь.

Чтобы уточнить, я не могу просто использовать существующее соединение, потому что конфигурация может измениться.

+1

Попробуйте 'firebase.app (" [ПО УМОЛЧАНИЮ] "). удалить() '. – cartant

+1

Он работает для меня в процессе узла. Я могу создавать и удалять названные приложения. Вы можете попробовать вызвать 'self.serverFirebase.delete()' вместо того, чтобы искать приложение, используя имя, указанное в вызове 'initializeApp'. – cartant

+0

thanks @cartant это разрешает поверхность проблемы, теперь я думаю, что это я создал новую проблему, когда новое соединение выполняется внутри then(), что делает его асинхронным, поэтому мне нужно переместить основную работу, чтобы она не начиналась до тех пор, пока после эта работа выполняется (в отдельном файле). –

ответ

6

Звонки на initializeApp принимают необязательное имя приложения. Если имя приложения не указано, используется имя [DEFAULT].

Чтобы не инициализировать приложение, необходимо вызвать delete в приложении. Экземпляр приложения возвращается вызовом initializeApp или может быть получен с помощью функции app.

То есть, вы можете инициализировать и деинициализацию приложения, как это:

app = firebase.initializeApp(configuration); 
app.delete(); 

Или так:

firebase.initializeApp(configuration); 
firebase.app('[DEFAULT]').delete(); 

Обратите внимание, что функция delete возвращает обещание, которое решает, когда удаление приложения полный.

0

В качестве альтернативы вы также можете просто инициализировать экземпляр Firebase вне функции вашего обработчика и передать его. Это предотвращает его многократное обращение.

Lambda любит разворачивать один экземпляр функции, но постоянно вызывает свой обработчик функции, то есть код вне обработчика выполняется только один раз.

Это может применяться ко всему, что только позволяет вам иметь один экземпляр.

Смежные вопросы