首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我的节点脚本在云Firestore查询后等待60秒才终止?

为什么我的节点脚本在云Firestore查询后等待60秒才终止?
EN

Stack Overflow用户
提问于 2019-05-26 22:28:16
回答 1查看 323关注 0票数 1

当我从命令行(node script.js)运行这个脚本时,它似乎工作得很好。Firestore中的所有活动都会打印到控制台,然后是“完成”。但是脚本不会立即退出。它正好挂起了60秒,然后我又恢复了提示符。这是怎么回事?

更新:是的,这是整个脚本。

代码语言:javascript
复制
const firebase = require('firebase')

const config = {
  apiKey: 'AIzaSyBmauMItX-bkUO1GGO_Nvrycy1Y6Pj1o_s',
  authDomain: 'fir-test-app-501b1.firebaseapp.com',
  databaseURL: 'https://fir-test-app-501b1.firebaseio.com',
  projectId: 'fir-test-app-501b1',
}

firebase.initializeApp(config)
firebase.firestore().collection('activities')
  .get()
  .then(qs => qs.docs.forEach(doc => console.log(doc.data())))
  .then(() => console.log('done.'))

我使用的是Node v8.11.3和Firebase v5.11.1。GitHub链接:https://github.com/danbockapps/firebase60

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-27 01:37:49

这就是了:

代码语言:javascript
复制
var firebaseApp = firebase.initializeApp(config);
var database = firebase.firestore();

database.collection('activities')
  .get()
  .then(qs => qs.docs.forEach(doc => console.log(doc.data())))
  .then(() => {
      console.log('done.');
      firebaseApp.delete();
      // database.disableNetwork(); // Another way to do this, though not as clean
  });

我深入研究了集合上的.get()调用的代码,发现在AsyncQueue中有一个60秒的超时,它在完成所有操作之后仍然存在。我想一定是某个地方有一个断开开关,它使谷歌图书馆运行的内部计时器短路,并在firebaseApp.delete()中找到了它,它根据它的文档执行以下操作:

(方法) firebase.app.App.delete():Promise

呈现此应用程序不可用,并释放所有关联服务的资源。

这适用于5.11.1和6.0.4,我强烈建议您在项目早期进行升级。我使用的是npm包firebase-admin,而不是您正在使用的firebase,并且不需要调用免费资源。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56314387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档