【问题标题】:Getting error No such Object when deleting file on firebase storage using cloud functions使用云功能删除 Firebase 存储上的文件时出现错误 No such Object
【发布时间】:2020-11-10 16:26:02
【问题描述】:

有些地方已经回答了这个问题,但没有一个解决方案对我有用。 我也关注了官方文档。并尝试对我的代码进行故障排除一周, 但我的代码似乎是正确的,只是错误不断出现,没有这样的对象

我注意到,当我将存储触发器用于生成拇指的相同图像时,它可以正常工作,并且我将文件路径、存储桶名称与我尝试使用 firestore 触发器删除的文件路径、存储桶名称进行了比较,结果是相同的。 但仅在firestore触发器中以错误结尾没有这样的对象

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

'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 中所有类似的问题都有我已经尝试过的类似解决方案。 任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: google-cloud-functions firebase-storage


    【解决方案1】:

    我终于解决了我的问题。 实际上,我的脚本没有任何问题,一切正常。

    发生的事情是,在使用云功能在删除firestore中的相应项目后自动删除我的存储图像之前,我在android代码中有一个功能可以完成所有工作。

    现在在写完我的云函数后,我忘了编辑我的安卓应用程序代码以不删除存储映像。

    因此,从 android 代码中删除比云函数更快,并且在云函数完成工作时,该文件不再存在。

    所以现在我明白了“我们只是人类”的表达方式

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-16
      • 2017-10-09
      • 2017-12-21
      • 2018-11-17
      • 2018-11-13
      • 2017-08-20
      • 2016-09-18
      • 2019-06-23
      相关资源
      最近更新 更多