1

Orderstatus 노드가 실시간 데이터베이스에서 1으로 변경 될 때마다 Customers에게 알림을 보내려고합니다.Firebase 용 클라우드 기능을 사용하여 노드를 변경하면 FCM을 보냅니 까?

Orders 노드에 변경이있을 때마다 밀어 넣기 알림이 전송됩니다.

의 값을 & 상태가 1 인 경우에만 스냅 샷에서 유효성을 확인할 수 있습니다. 그러나 Orderstatus1 일 때 클라우드 기능을 트리거하려고합니다.

경로를 /S01/Orders/{pushId}/orderStatus으로 변경하면 그리고 나는 customerEmail를 얻을 수

enter image description here

CODE 현재

var functions = require('firebase-functions'); 
var admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 

exports.shopperAlert = functions.database.ref('/S01/Orders/{pushId}') 
    .onWrite(event => { 

     var eventSnapshot = event.data; 
     var customerEmail = eventSnapshot.child("orderedBy").val(); 
     console.log(customerEmail); 

     const getInstanceIdPromise = admin.database().ref('S01/Customers/' + customerEmail + '/Token/').once('value'); 

     return Promise.all([getInstanceIdPromise]).then(results => { 
      const instanceId = results[0].val(); 

      const payload = { 
       notification: { 
        title: "Hey", 
        body: "Your Order is on the Way!" 
       } 
      }; 

      admin.messaging().sendToDevice(instanceId.FCM, payload) 
       .then(function (response) { 
        console.log("Successfully sent message:", response); 
       }) 
       .catch(function (error) { 
        console.log("Error sending message:", error); 
       }); 

     }); 
    }); 

답변

1

.... 나에게이 문제를 처리하는 최선의 방법을 가이드 해주십시오

, 당신은 할 수 없습니다 변경된 데이터에 따라 함수의 트리거를 필터링하십시오. 그것은 트리거됩니다 어떤 시간 어떤 데이터의 참조 경로가 변경됩니다. 데이터가 원하는대로 변경되면 함수 내부를 확인해야합니다.

"orderstatus"를 더 자세히 듣고 싶다면 함수 내에서 데이터베이스를 다시 쿼리하여 작업해야하는 다른 데이터를 얻을 수 있습니다. event.data.ref에는 함수를 실행 한 경로에 Reference이 포함되어 있으며이를 사용하여 데이터베이스를 탐색하고 쿼리하여 찾고있는 다른 데이터를 찾을 수 있습니다. 당신이하고있는 것과 비슷한 많은 일들을 수행하는 sample code도 연구해야합니다.

0

exports.shopperAlert = functions.database.ref('/S01/Orders/{pushId}') 
    .onWrite(event => { 
     const order = event.data.val(); 
     const status = order.orderStatus; 
     if(status == 1){ 
      // send notification 
     }else{ 
      // do something 
    } 
}); 
시도
관련 문제