Невозможно удалить файлы Google Cloud Storage с помощью функций Firebase - PullRequest
0 голосов
/ 23 декабря 2018

Мне не удается удалить файлы из моего хранилища Firebase с помощью функций Firebase.Я занимаюсь этим уже почти неделю, и «самым близким», которое я получил, я считаю, является ошибка в самой ошибке, «Невозможно проанализировать ответ JSON в ApiError ».

Теперь я хочу, чтобы после удаления пользователя 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)

Я не знаю, что это значит.

Я установил мой сервисный агент API Google и Сервисная учетная запись App Engine по умолчанию в качестве администраторов хранилища.

Мои зависимости на момент публикации:

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

1 Ответ

0 голосов
/ 23 декабря 2018

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

Эта строка выше не является именем вашего сегмента.Это URL к месту в корзине.Имя сегмента не похоже на URL, и у него нет пути к файлу.Возможно, имя вашего сегмента по умолчанию - просто «MY_PROJECT.appspot.com», и вы можете проверить это в облачной консоли в разделе «Хранилище».

Похоже, вы ошибаетесь в том, что сегментпапка или что-то.Ведра - это просто контейнеры.Вы создаете ссылки на файлы после того, как у вас есть объект Bucket.Эти файлы могут содержать компоненты пути, такие как "/user/UID/somefile.jpg".

...