Функции Firebase: ApiError: Не найдено в Object.parseHttpRespBod: при удалении из хранилища Firebase - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь удалить элемент из своего хранилища 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
    {
    }
});

И я добавил для роли агента администрирования службы API API Google и по умолчанию хранилища учетных записей службы App Engine со страницы I am & admin.

Спасибо.

1 Ответ

0 голосов
/ 28 января 2019

проблема здесь:

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

В данный момент функция прослушивает документ с именем «visa_cop» в папке «info». вам нужно добавить токен в конце, чтобы сообщить функции прослушивать обновление любого файла в этой папке (или вы можете указать файл при необходимости).

Просто добавьте, например, /{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}"
...