我試圖使用此代碼段將資料從 Firestore 匯出到谷歌云存盤
const functions = require('firebase-functions');
const firestore = require('@google-cloud/firestore');
const client = new firestore.v1.FirestoreAdminClient();
const bucket = 'gs://BUCKET_NAME';
exports.scheduledFirestoreExport = functions.pubsub.schedule('every 24 hours').onRun(async() => {
const projectId = process.env.GCP_PROJECT || process.env.GCLOUD_PROJECT;
const databaseName = client.databasePath(projectId, '(default)');
const response = await client.exportDocuments({
name: databaseName,
outputUriPrefix: bucket,
collectionIds: [],
});
console.log(`Backup Successful :${response}`, {response});
//here I am trying to import the data to bigquery
});
我面臨的問題是 client.exportDocuments 在 Google Cloud Storage Bucket 中的檔案創建時間前幾毫秒完成。因此,當我嘗試訪問它以進行匯入時,它說沒有這樣的檔案存在。URL 是錯誤的。
對此有何建議?
uj5u.com熱心網友回復:
這是基礎方法 databases.export 檔案。
這response是一個操作,它可能是 GCP 上一個長期運行的程序。
您需要輪詢(我認為無法訂閱)操作端點,直到作業成功或失敗。
如果它完成,您就可以開始 BigQuery 作業。
請參閱:管理匯出和匯入操作
但是,這可能會超過 Cloud Function 的超時時間,并且可能不應在單個函式呼叫期間嘗試。
您可能需要考慮創建另一個在匯出完成后觸發的流程。我沒有這樣做過。您可以創建一個由 GCS 事件觸發的后臺函式。我不知道。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/356417.html
標籤:节点.js 谷歌云firestore 谷歌云功能 谷歌云存储
上一篇:如何在React中清理HTML?
