Подтвердить что ты не робот

Node процесс не выходит после того, как firebase однажды

Используя node.js с npm firebase.

var firebase = require('firebase');
var blahFirebase = new firebase('https://myfirebase.firebaseIO.com/blah');
blahFirebase.once('value', function (snapshot) {
    //
});

Почему node не завершает чтение данных?

4b9b3361

Ответ 1

Обновление

Обратите внимание, что это больше не применимо. Node.js больше не будет зависать при использовании once(), хотя он будет удерживаться открытым до тех пор, пока на удаленном сервере будут активные слушатели.

Оригинал

Процесс Firebase открывает сокеты на сервере и устанавливает слушателей для входящих данных по этим соединениям. Так же, как веб-сервер node, ожидающий входящих HTTP-соединений, это открывает процесс.

Чтобы завершить процесс, вы можете просто использовать process.exit() изнутри обратного вызова:

blahFirebase.once('value', function (snapshot) {
    //
    process.exit();
});

Ответ 2

В новом API Firebase вы должны использовать firebase.app.App.delete(), чтобы освободить ресурсы, которые он удерживает. Например:

var app = firebase.initializeApp({ ... });
var db = firebase.database();

// Do something

app.delete(); // Release resources

Не используйте process.exit(), так как он остановит весь процесс (это не то, что вы обычно хотели бы).

Ответ 3

В моем случае используется администратор firebase,

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

и я могу завершить node процесс

return admin.app().delete();