Функция Firebase не срабатывает - PullRequest
0 голосов
/ 15 сентября 2018

Здравствуйте, я пытаюсь вызвать подколлекции в документе, вот мой код,

exports.updateCounter = functions.firestore
  .document('journeys/{journeyId}/{collectionId}/{id}')
  .onWrite((change, context) => {

      const docRef = change.after.ref;
      const collectionId = context.params.collectionId;
      const eventType = context.eventType;
      const uid = context.auth.uid;
      console.log("Update Counter called!");
      console.log("Event type: "+ eventType);
      console.log("Userid: " + uid); 
});

Но, похоже, функция не срабатывает, Моя база данных выглядит примерно так:

путешествия / {id} / комментарий / {commentid} / лайк / {likeid}

путешествия / {id} / комментарий / {commentid} / likeshard / {shardId}

Когда {shardId} или {likeid} функция не запущена

вот мои правила

match /journeys/{journey} {
  allow read, write: if request.auth.uid != null;
  allow delete: if request.auth.uid == resource.data.author_id;

  match /comment/{document=**}{
    allow read, update, delete, create: if request.auth.uid != null;
  }

и при развертывании функции:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
+  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (41.41 KB) for uploading
+  functions: functions folder uploaded successfully
i  functions: uploading functions in project: updateCounter(us-central1)
i  functions: updating Node.js 6 function updateCounter(us-central1)...
+  functions[updateCounter(us-central1)]: Successful update operation.

+  Deploy complete!

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

для тех, кто бродил, я исправил эту проблему, используя этот путь

exports.updateCounter = functions.firestore
.document('journeys/{journeyId}/{collectionId}/{document=**}')
.onWrite((change, context) => {

  const docRef = change.after.ref;
  const eventType = context.eventType;
  //const uid = context.auth.uid;
  console.log("Update Counter called!");
  console.log("Event type: "+ eventType);
  console.log("parent collection name: " + docRef.parent.id);

});

Каждый документ в дереве будет запускать эту функцию. независимо от того, насколько глубоко документ.

0 голосов
/ 15 сентября 2018

Путь подстановочного знака в вашей функции Firestore не совсем соответствует ни одному из путей документа, которые вы пытаетесь изменить.Количество элементов пути должно быть точно таким же.Ваша функция просматривает документы, которые имеют 4 элемента пути:

journeys/{journeyId}/{collectionId}/{id}

, но ваши измененные документы имеют 6 элементов пути:

journey/{id}/comment/{commentid}/like/{likeid}

Вам нужно будет более конкретно вызывать подколлекциичто вас интересует.

Кроме того, я отмечу, что ваша функция говорит «поездки», но ваши измененные документы говорят «путешествие».Но исправить это все равно не поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...