firebase一次后节点进程不会退出

时间:2013-08-04 19:16:07

标签: node.js firebase

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

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

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

4 个答案:

答案 0 :(得分:15)

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

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

// Do something

app.delete(); // Release resources

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

答案 1 :(得分:10)

<强>更新

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

<强>原始

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

要结束该过程,您只需从回调中使用process.exit():

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

答案 2 :(得分:8)

我的案例是使用firebase admin,

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

我可以通过

结束节点进程
return admin.app().delete();

答案 3 :(得分:0)

setTimeout(()=> {
    process.exit(1);
}, 1000);

Dunno为什么,但是解决了这个问题。

相关问题