У меня есть логика c изображения, загруженного из внешнего интерфейса -> Я получаю URL-адрес для загрузки и прикрепляю его к документу пользователя с помощью функции.
Это текущий код:
export const newProfilePictureUploaded = functions.region('europe-west1').storage.object().onFinalize(async (object) => {
if (!object.contentType?.startsWith('image/')) return;
return admin.storage().bucket(object.bucket).file(object.name || '').makePublic().then(async data => {
const filename = object.name as string;
const splitName = filename.split('/');
const folderName = splitName[0];
if (folderName === 'profilePics') {
const uid = splitName[1].substring(0, splitName[1].indexOf('.'));
console.log(uid);
await updateUserAvatar(uid, 'https://storage.googleapis.com/' + object.bucket + '/' + object.name)
return;
}
console.log('No operation for folder ' + folderName);
return
})
})
Теперь дело в том, что изображение отображается в URL-адресе, но даже если изображение в хранилище будет заменено, URL-адрес все равно будет указывать на это старое изображение. Хотя он должен быть удален, а новое изображение должно быть по этому пути.
Почему я не использую метод .getSignedUrl()
? URL-адрес, который я получаю, слишком длинный, чтобы хранить его в RTDB, и URL-адрес может быть опубликован c, поэтому использование этого метода для меня неоптимально.