Firebase函数:ApiError:在Object.parseHttpRespBod中找不到:从Firebase存储中删除时

时间:2019-01-18 14:02:50

标签: firebase google-cloud-platform google-cloud-functions firebase-storage

我正在尝试通过Firebase云功能从Firebase存储中删除一项。

但是它给了我这个错误。

    Error { ApiError: Not Found
    at Object.parseHttpRespBody (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/common/src/util.js:193:30)
    at Object.handleResp (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/common/src/util.js:131:18)
    at /user_code/node_modules/firebase-admin/node_modules/@google-cloud/common/src/util.js:496:12
    at Request.onResponse [as _callback] (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/common/node_modules/retry-request/index.js:198:7)
    at Request.self.callback (/user_code/node_modules/firebase-admin/node_modules/request/request.js:185:22)
    at emitTwo (events.js:106:13)
    at Request.emit (events.js:191:7)
    at Request.<anonymous> (/user_code/node_modules/firebase-admin/node_modules/request/request.js:1161:10)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
  code: 404,
  errors: [ { domain: 'global', reason: 'notFound', message: 'Not Found' } ],
  response: undefined,
  message: 'Not Found' }

这是我的代码:

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

admin.initializeApp();
var db = admin.firestore();


var storage = admin.storage().bucket('visa_cop');


exports.deletingVisaCop = functions.firestore.document('users/{user_Id}/info/visa_cop').onUpdate((change,context) =>{
    var data = change.after.data().checked;

    if(data === true)
    {
        return storage.delete().then(function(data) {
            return console.log("DataIs",data);
          }).catch(function(error){
             return console.log("Error",error);  
          });
    } else
    {
    }
});

我从“我是&管理员”页面添加了Google API服务代理和App Engine默认服务帐户存储管理员角色。

谢谢。

1 个答案:

答案 0 :(得分:0)

问题在这里:

functions.firestore.document('users/{user_Id}/info/visa_cop').onUpdate((change,context)

此刻,该函数侦听文件夹“ info”中的一个名为“ visa_cop”的文档。您需要在末尾添加令牌,以告诉该函数侦听此文件夹中任何文件的更新(或者您可以根据需要指定文件)。

只需附加例如/{visaId}之后的visa_cop,如下所示:

functions.firestore.document('users/{user_Id}/info/visa_cop/{visaId}').onUpdate((change,context)

Ps。 “ visaId”可以是任何值,但是必须与您在功能部署中定义的文档路径匹配。

在您的示例中,该函数侦听“ visa_cop”文件夹中的任何文档,因此,如果您使用:

控制台:

  • 触发器是“ Cloud Firestore”
  • 事件类型为“更新”
  • 文档路径为“ students / {studentId} / visa_cop / {visaId}”

CLI:

gcloud functions deploy [FUNCTION_NAME] \
--runtime [RUNTIME] \
--trigger-event providers/cloud.firestore/eventTypes/document.update \
--trigger-resource "projects/[PROJECT_ID]/databases/(default)/documents/users/{userId}/info/visa_cop/{visaId}"