在 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 连接的主要内容,如果未能解决你的问题,请参考以下文章