21

我正在尝试创建一个简单的 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() 强制进程终止更优雅的解决方案。

有任何想法吗?

4

3 回答 3

9

我并不热衷于强制断开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));
于 2014-01-29T18:25:15.787 回答
3

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

于 2016-10-15T16:56:26.343 回答
2

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

  • 您需要取消您设置的任何异步侦听器(例如“数据更改”事件)
  • 称呼firebase.database().goOffline()
  • 如果你用过firebase.auth(),你需要打电话firebase.auth().signOut()
  • 最后,您还需要通过调用销毁 Firebase 应用程序app.delete()

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

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

于 2021-01-11T02:49:15.803 回答