在 Node.JS 中关闭 firebase 连接

Posted

技术标签:

【中文标题】在 Node.JS 中关闭 firebase 连接【英文标题】:Closing a firebase connection in Node.JS 【发布时间】:2013-09-23 02:46:42 【问题描述】:

我正在尝试创建一个简单的 node.JS 命令行脚本,以使用他们的 javascript API 与 Firebase 进行交互。我希望该工具在完成​​交互后关闭 Firebase 连接并终止。

这是一些示例代码,显示了我想要实现的目标:

var Firebase = require('firebase');
var myRootRef = new Firebase('https://myprojectname.firebaseIO-demo.com/');
myRootRef.set('It's working!');

一种可能的解决方案是添加回调并调用 process.exit():

var Firebase = require('firebase');
var myRootRef = new Firebase('https://myprojectname.firebaseIO-demo.com/');
myRootRef.set("It's working!", function()  
    process.exit(0); 
);

但是,我希望有一个比使用 process.exit() 强制进程终止更优雅的解决方案。

有什么想法吗?

【问题讨论】:

目前没有记录终止 Firebase 连接的方法。 谢谢,有没有任何未记录的方法可以做到这一点?就算以后代码坏了也没关系…… @Anant Firebase 什么时候解决这个问题?不必使用 process.exit(0) 来终止我们已经完成了 firebase 工作的节点进程真是太好了。 这个问题确实很可笑;更可笑的是,它在过去 3 年中没有得到修复。 【参考方案1】:

我也不热衷于强制断开与process.exit(0) 的连接。因为我只需要数据持久性(不是实时功能)我使用REST API。我发现普通 HTTPS 的速度是官方 firebase 的两倍npm 模块..

var https = require("https"),
    someData =  some: "data" ;

var req = https.request( 
    hostname: "myprojectname.firebaseio.com", 
    method: "POST", 
    path: "/.json"
);
req.end(JSON.stringify(someData));

【讨论】:

【参考方案2】:

这可能可以通过firebase.database().goOffline() 解决。从另一个线程得到这个:https://***.com/a/37858899

【讨论】:

这仅适用于const db = firebase.database(); db.goOffline();。对 db 本身的任何操作都会导致进程挂起。【参考方案3】:

正确停止 Firebase JS SDK 需要几个步骤,以便 Node.js 进程可以正常终止而不会用process.exit() 强行中断它:

您需要取消您设置的所有异步侦听器(如“数据更改”事件) 致电firebase.database().goOffline() 如果您使用firebase.auth(),您需要致电firebase.auth().signOut() 最后,你还需要调用app.delete()销毁Firebase应用程序

我已经使用 Node.js 版本 10 和 Firebase JS SDK 版本 8 对此进行了测试。

来源:https://blog.famzah.net/2021/01/11/properly-stop-a-firebase-app-in-node-js/

【讨论】:

以上是关于在 Node.JS 中关闭 firebase 连接的主要内容,如果未能解决你的问题,请参考以下文章

firebase 在 Swift 中关闭重载表?

使用 react-native-firebase 在 Android 中关闭应用程序时未收到 fcm 消息

在 Flutter 中关闭 AlertDialog

如何在android中关闭数据连接?

在 Java 中关闭数据库连接

在 Twisted 中关闭 Perspective Broker 连接