2017-12-13 3 views
-5

저는 Node.js를 처음 사용합니다. firebase를 만들려고합니다. 새로운 업데이트가 firebase 실시간 데이터베이스 노드에 적용될 때 실행할 수 있습니다. 나는 JS 코드 내가 약속이나 값을 반환하지 않는 오류를 볼이클라우드 트리거에서 "return"을 어디에 놓아야합니까?

for (var player in players) { 
    admin.database().ref().. { 
    .. 
    admin.messaging().sendToDevice(userFCM, payload) 
    } 

같은 구조를 가지고있다. 그러나 나는 그것을 어디에 두어야하는지 모른다. 누구든지 도와 줄 수 있습니까?

업데이트 : 여기에 전체 코드를

for (var playerUid in players) { 

     admin.database().ref('/users/' + playerUid).once('value', snapshot => { 

      var data = snapshot.val(); 

      var userFCM = data["fcm"]; 
      console.log("userFCM: ", userFCM); 

      var payload = { 
       notification: { 
       title: title, 
       body: body 
       }, 
       data: { 
       groupId: groupId 
       } 
      }; 
      return admin.messaging().sendToDevice(userFCM, payload) 
       .then(response => { 
       console.log("Successfully sent message:", response); 
       }).catch(function(error) { 
       console.log("Error sending message:", error); 
       }); 

      }) 
    } 
+1

https://firebase.google.com/docs/functions/terminate-functions 문서를 숙지하십시오. https://github.com/firebase/functions-samples/ –

+0

샘플 코드를 살펴 보는 것도 좋습니다. @DougStevenson 나는 문서를 읽고 IOS 물건을 관리했지만 Node.js 부분을 이해할 수 없었다! 저는 node.js가 아닌 IOS 개발자입니다. – dotfreelancer

+1

예, 새로운 언어와 환경을 배우는 데 약간의 시간을 할애해야 할 것 같습니다. –

답변

0

이 방법을 시도

return admin.messaging().sendToDevice(userFCM, payload); 

을 그리고이 작동하지 않는 경우에, 나는 질문에 자세한 내용을 넣어하도록 요청합니다. 문제를 철저히 확인할 수 있도록

+0

나는 이것이 for 루프의 실행을 멈출 것이라고 믿는다. 틀린가? – dotfreelancer

+0

물론 당신이 옳습니다. 루프를 멈추고 루프가 다시 발생하는 것을 방지합니다. – Ashish

+0

그래서 루프 내부에서 모든 작업을 수행하는 동안 firebase에 대한 값을 반환한다고 가정합니다. – dotfreelancer