Облачные функции Firebase: как получить ссылку на документ с использованием подстановочных знаков? - PullRequest
1 голос
/ 07 мая 2020

Вот что я пытаюсь сделать с облачными функциями Firebase:

  1. Слушайте изменения в одном из документов в коллекции 'public_posts'.

  2. Сообщите, если в поле 'publi c' произошло изменение с true на false

  3. Если true, удалите документ, который запустил функцию

Для шагов 1 и 2 код прост, но я не знаю синтаксиса для шага 3. Как можно получить ссылку на документ, запускающий функцию? То есть, я хотел бы знать, о каком коде идет речь в пустой строке ниже:

exports.checkPrivate = functions.firestore
.document('public_posts/{postid}').onUpdate((change,context)=>{
     const data=change.after.data();
     if (data.public===false){
         //get the reference of the trigger document and delete it 
     }
     else {
         return null;
     }
});

Есть какие-нибудь советы? Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 мая 2020

Как объяснено в do c:

Для событий onWrite и onUpdate параметр change имеет поля до и после. Каждый из них - это DataSnapshot.

Итак, вы можете сделать следующее:

exports.checkPrivate = functions.firestore
.document('public_posts/{postid}').onUpdate((change, context)=>{
     const data=change.after.data();
     if (!data.public) { //Note the additional change here

         const docRef = change.after.ref;
         return docRef.delete();

     }
     else {
         return null;
     }
});
0 голосов
/ 07 мая 2020

Слушатель onUpdate возвращает объект Change (https://firebase.google.com/docs/reference/functions/cloud_functions_.change)

Чтобы получить обновленный документ, вы должны сделать:

change.after.val()

Чтобы удалить документ, выполните:

change.after.ref.remove()

...