【问题标题】:Closing a firebase connection in Node.JS在 Node.JS 中关闭 firebase 连接
【发布时间】: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 年中没有得到修复。

标签: node.js firebase


【解决方案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://stackoverflow.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/

    【讨论】:

      猜你喜欢
      • 2016-11-08
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-26
      相关资源
      最近更新 更多