gpt4 book ai didi

javascript - 如何阻止 Firebase Functions 对每个 Cloud Functions 执行一次本地函数?

转载 作者:行者123 更新时间:2023-11-30 20:00:12 28 4
gpt4 key购买 nike

因此,我正在使用 spotify API 进行搜索。在本地,我使用 tsc 和 node 测试了我的代码;一切都按预期工作。

但是,当我部署 index.ts 时,日志显示了一些奇怪的行为。

在文件的顶部我有以下内容:

 //Load libraries
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const firebase = require("firebase");
const stripe = require('stripe')(functions.config().stripe.token)
const SpotifyWebApi = require('spotify-web-api-node');

//Initialize app
const APP = {
apiKey: "my-API-Key",
authDomain: "My domain auth",
databaseURL: "my databse url",
storageBucket: "my bucket",
messagingSenderId: "my messenger ID"
}

//The Client Credential Flow for Spotify API
const spotifyApi = new SpotifyWebApi({
clientId: 'My cliend ID',
clientSecret: 'My-secret-Key'
});

// Retrieve an access token for Spotify.
spotifyApi.clientCredentialsGrant().then(function (data) {
console.log('All data Spotify API: ' + data.body )
console.log('The access token expires in ' + data.body['expires_in']);
console.log('The access token is ' + data.body['access_token']);
// Save the access token so that it's used in future calls
spotifyApi.setAccessToken(data.body['access_token']);
}, function (err) {
console.log('Something went wrong when retrieving an access token', err);
})

firebase.initializeApp(APP);
admin.initializeApp(APP)

问题是日志表明 spotify 访问 token 函数在我的 index.js 文件中针对每个 Firebase-Cloud 函数运行一次。我收到了十几个 token ,每个 token 都显示在从我的一个 firebase-cloud 函数调用的日志中。

当我上传整个 index.ts 时,如何让 Firebase Functions 运行此代码一次且仅一次?当我上传单个函数时不运行它;那也会很有用。

谢谢。

最佳答案

index.js 的顶级代码在 Cloud Functions 实例化的每个容器中运行,以确保正确初始化容器以运行您的函数。由于 Cloud Functions 可能会实例化多个容器,因此代码可能会运行多次。

无法控制 Cloud Functions 实例化的容器数量。如果您不希望代码在每个容器中运行,请不要将其作为 index.js 中的顶级代码。

例如,您可以在调用函数时按需创建 Spotify 凭据。这确保凭据仅在实际调用您的函数的容器上,尽管这确实意味着在容器中首次调用您的函数将需要获取 Spotify 凭据,因此需要更长的时间才能完成。

关于javascript - 如何阻止 Firebase Functions 对每个 Cloud Functions 执行一次本地函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53461425/

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