Ini adalah fungsi saya, bahkan tidak dipicu oleh cloud fungsi firebase! saya mendapatkan pesan kesalahan: Kesalahan: eksekusi fungsi gagal. Detail: Tidak dapat membaca properti 'ref' dari undefined

     //send the push notification 
    exports.sendPushNotification = functions.database.ref('contacts/').onCreate(event => {

      const root = event.after.ref.root
      var messages = []

      //return the main promise 
      return root.child('/users').once('value').then(function (snapshot) {
          snapshot.forEach(function (childSnapshot) {

              var expoToken = childSnapshot.val().expoToken;

              messages.push({
                  "to": expoToken,
                  "sound": "default",
                  "body": "New Note Added"
              });
          });
          //firebase.database then() respved a single promise that resolves
          //once all the messages have been resolved 
          return Promise.all(messages)

      })
          .then(messages => {
              // console.log(messages)
              fetch('https://exp.host/--/api/v2/push/send', {
                  method: 'POST',
                  headers: {
                      'Accept': 'application/json',
                      'Content-Type': 'application/json',
                  },
                  body: JSON.stringify(messages)

              });
          })
          .catch(reason => {
              console.log(reason)
          })


    });
0
Slown1970 30 Oktober 2019, 22:15

1 menjawab

Jawaban Terbaik

onCreate diubah menjadi berikut:


exports.sendPushNotification = functions.database.ref("contacts/").onCreate((snap, context) => {
  const createdData = snap.val();

Dalam kasus Anda, untuk mendapatkan root lakukan hal berikut:

const roots = snap.ref.root

Anda dapat menemukan informasi lebih lanjut di sini:

https://firebase.google.com/docs/functions/beta-v1-diff

1
Peter Haddad 30 Oktober 2019, 19:32