24

将 node.js 与 npm firebase 一起使用。

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

为什么节点读完数据后不退出?

4

4 回答 4

23

在新的 Firebase API 中,您应该使用firebase.app.App.delete()来释放其持有的资源。例如:

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

// Do something

app.delete(); // Release resources

不要使用process.exit(),因为它会停止整个过程(这不是您通常想要的)。

于 2016-10-05T22:26:12.877 回答
13

我的案例是使用 Firebase 管理员,

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

我可以通过

return admin.app().delete();
于 2017-07-02T21:44:28.867 回答
11

更新

请注意,这不再适用。使用 once() 时 Node.js 将不再挂起,尽管只要有活动的侦听器订阅了远程服务器,它就会保持打开状态。

原来的

Firebase 进程打开到服务器的套接字,并为这些连接上的传入数据建立侦听器。就像节点 Web 服务器一样,等待传入的 HTTP 连接,这使进程保持打开状态。

要结束该过程,您可以简单地从回调内部使用 process.exit() :

blahFirebase.once('value', function (snapshot) {
    //
    process.exit();
});
于 2013-08-04T19:51:21.040 回答
-1
setTimeout(()=> {
    process.exit(1);
}, 1000);

不知道为什么,但解决了这个问题。

于 2020-12-15T15:28:23.247 回答