获取错误使用云函数删除FireBase存储上的文件时无此类对象 [英] Getting error No such Object when deleting file on firebase storage using cloud functions

查看:16
本文介绍了获取错误使用云函数删除FireBase存储上的文件时无此类对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题已经在一些地方得到了回答,但没有一个解决方案对我有效。 关于这一点,我也跟随了官方医生的意见。试着排除我的代码故障达一周之久, 但是我的代码似乎是正确的,只是错误一直显示没有这样的对象

我注意到,当我对工作正常的同一图像使用存储触发器进行拇指生成时,我将文件路径、存储桶名称与试图使用FireStore触发器删除的文件路径、存储桶名称进行比较,结果是相同的。 但仅在FireStore触发器中,这以错误No That Object结束

这是我的代码,我看不出有什么问题。

'use strict';
// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');

const admin = require('firebase-admin');

//var serviceAccount = require("./xproject-cdfdc-firebase-adminsdk-xxxx-xxxxx.json");
/*admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "https://xproject-cdfdc.firebaseio.com"
});*/

admin.initializeApp();

const db = admin.firestore();
const storage = admin.storage();


exports.cleanStorage = functions.firestore.document('items/{itemId}').onDelete((snapshot,context) => {

    const id = snapshot.get('itemId');
    //log: gettig id successfully
    const imageName = snapshot.get('imageName');
    //log: getting image name successfully
    const defaultBucket = storage.bucket(); 
    //log: defaultBucket.name() => xproject-cdfdc.appspot.com
    //log: My bucket is initialzed successfully and exists:
    const imageFile = defaultBucket.file('images/'+id+'/'+imageName);
    //log: imageFile.name() =>images/W0qMLHqfQANfMsbUEmihK49NFgm2_1595320646264/photo1595320646264.jpg
    //log: this path is correct and the file exists on stoarage

    return imageFile.delete().then(result =>{
        return console.log(`Deleted ${imageName}`);
    }).catch(error => {
      return console.log("Deliting  failed: error->"+error);
      //log: error->Error: No such object: xproject-cdfdc.appspot.com/images/W0qMLHqfQANfMsbUEmihK49NFgm2_1595320646264/photo1595320646264.jpg
    });
});

所以现在我不知道应该在代码中更正什么,就像在Stackoverflow中一样,所有类似的问题都有类似的解决方案,我已经尝试过了。 如有任何帮助,我们将不胜感激。谢谢您。

推荐答案

我终于解决了问题。 实际上,我的脚本没有任何错误,一切都运行得很好。

发生的情况是,在FireStore中删除相应项目后,在使用云函数自动删除我的存储镜像之前,我在Android代码中有一个函数来完成所有工作。

现在,在编写云函数后,我忘记编辑Android应用程序代码以不删除存储映像。

因此,从Android代码中删除的速度比云函数快,并且在云函数完成作业时,该文件不再存在。

所以现在我理解了"我们只是人"这句话

这个错误花了我整整一周的时间。

(同时删除对我不起作用的文件夹,并且没有这样的对象。删除仅工作的文件)

这篇关于获取错误使用云函数删除FireBase存储上的文件时无此类对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆