gpt4 book ai didi

javascript - 为什么我的 Node 脚本在 Cloud Firestore 查询后等待 60 秒才终止?

转载 作者:行者123 更新时间:2023-11-30 14:00:57 26 4
gpt4 key购买 nike

当我从命令行 (node script.js) 运行此脚本时,它似乎工作正常。来自 Firestore 的所有事件都会打印到控制台,然后是“完成”。但是脚本不会立即退出。它挂起恰好 60 秒,然后我得到提示。这是怎么回事?

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

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

最佳答案

给你:

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() 中找到它,它根据其文档执行以下操作:

(method) firebase.app.App.delete(): Promise

Renders this app unusable and frees the resources of all associated services.

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

关于javascript - 为什么我的 Node 脚本在 Cloud Firestore 查询后等待 60 秒才终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56314387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com