簡體   English   中英

無法使用Firebase功能刪除Google Cloud Storage文件

[英]Cannot delete Google Cloud Storage files using Firebase Functions

我似乎無法使用Firebase功能從Firebase存儲中刪除文件。 我已經進行了將近一個星期的時間,而我所得到的“最接近”我相信是錯誤本身內的錯誤, “無法在ApiError處解析JSON響應 ”。

現在,我要做的是,一旦刪除Firebase用戶,我想從用戶文件和數據中清除數據庫和存儲。

const admin = require('firebase-admin');
const {Storage} = require('@google-cloud/storage');

exports.deleteUserHandler = (event, context) => {

const userUID = event.uid;

const bucketname = "gs://MY_PROJECT.appspot.com/user/"+userUID;

const storage = new Storage({
    projectId: "MY_PROJECT_ID",
});

return admin.database().ref('/user/' + userUID).remove().then(() => {
    console.log("User " + userUID + " database removed");

    return storage.bucket(bucketname).file("profilepic.jpeg").delete();
}).then(() => {
    return storage.bucket(bucketname).file("smallprofilepic.jpeg").delete();
}).then(() => {
    console.log("User " + userUID + " firestore removed");
});
}

該函數應在應該觸發時從實時數據庫中刪除數據。 但是,我無法從存儲中刪除圖像。 我覺得我現在應該是最接近的,但是從功能日志中得到的錯誤如下。

Error: Cannot parse JSON response
at ApiError (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/build/src/util.js:43:9)
at Util.parseHttpRespBody (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/build/src/util.js:167:42)
at Util.handleResp (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/build/src/util.js:116:117)
at retryRequest (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/build/src/util.js:403:22)
at onResponse (/user_code/node_modules/@google-cloud/storage/node_modules/retry-request/index.js:200:7)
at /user_code/node_modules/@google-cloud/storage/node_modules/teeny-request/build/src/index.js:222:13
at process._tickDomainCallback (internal/process/next_tick.js:135:7)

我不知道這是什么意思。

我已將我的Google API服務代理App Engine默認服務帳戶設置為存儲管理員。

我發布時的依賴是

"@google-cloud/storage": "^2.3.4",
"firebase-admin": "^6.4.0",
"firebase-functions": "^2.1.0"

const bucketname =“ gs://MY_PROJECT.appspot.com/user/” + userUID;

上面的字符串不是您存儲桶的名稱。 這是存儲桶中某個位置的URL。 存儲桶的名稱看起來不像URL,也沒有文件的路徑。 默認存儲桶的名稱可能只是“ MY_PROJECT.appspot.com”,您可以在“存儲”部分的“雲控制台”中進行檢查。

似乎您可能誤以為存儲桶是文件夾或其他東西。 桶只是容器。 擁有Bucket對象后,便可以建立對文件的引用。 這些文件可能具有路徑組件,例如“ /user/UID/somefile.jpg”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM