저는 오랫동안이 문제에 시달렸는 데 왜 이런 일이 발생하는지 전혀 알지 못합니다.Firebase 클라우드 기능을 사용하여 알림을 보내는 중 루프가 발생했습니다.
Cloud 기능을 사용하여 상태 변경 알림을 전송합니다. 내가 대시 보드를 사용하여 상태를 변경하는 기능을 배포 한 후
exports.sample = functions.database.ref('users/{pushID}/status').onUpdate(Snap => {
const key = Snap.params.pushID;
var ref = admin.database().ref('users');
return ref.child(`${key}`).on("value", function(snap) {
const category = snap.child('category').val();
console.log("category",category);
var ref = admin.database().ref('/categories/')
return ref.child(`${category}`).on("value", function(snapshot){
const tokenID = snapshot.child('tokenID').val();
const payload = {
data: {
title: 'HELLO',
text: `HOW ARE YOU ?`
}
};
return admin.messaging().sendToDevice(tokenID, payload);
})
});
이 내 코드입니다.
내가 이렇게하면 알림을받습니다! (그리고 나는 로그에서 "보낸다") 하지만 "상태"를 다시 변경하면 두 개의 알림이 표시됩니다. 그리고 지금 나는 로그에 두 번이나 "보냈다".
루프처럼 보이지만 이유가 무엇인지 모르겠다. 로그에 하나의 값만 표시되고 여러 토큰이 없거나 동일한 사용자에게 동일한 알림을 보냅니다.
"카운터"가 재설정되고 첫 번째 변경 사항이 하나의 알림 만 보내는 기능을 다시 배포 할 때마다.
내 데이터베이스는 다음과 같습니다
users
-->push id
---->status=""
---->category="test"
categories
-->test
코드가 들여 쓰기가 전혀 없기 때문에 코드를 읽기가 어렵습니다. –
@DougStevenson 지금은? – user2396640