1

갑자기 내 기능을 배포 한 후 갑자기 일부 기능이 갑자기 시간 초과됩니다. 클라우드 기능 콘솔에서이 내용을 볼 수 있습니다. 이것은 둥지를 틀고 약속을 되 돌리는 때 일어나는 것 같습니다. 이상한 일은 결코 전에 일어난 일이 아닙니다.Firebase 용 클라우드 기능이 갑자기 시간 초과되었습니다.

여기 내 코드가 있습니다.

exports.pushMessageQueue = functions.database.ref('/userPushMessagesQueue/{userId}/{messageId}').onWrite(event => { 
    if (!event.data.exists()) { 
     console.log('DOES NOT EXIST!'); 
     return "not exists"; 
    } 

    console.log("EXISTS!"); 

    const userId = event.params['userId']; 
    const messageId = event.params['messageId']; 

    const payload = event.data.val(); 

    return database.ref('devices').orderByChild('user_id').equalTo(userId).once('value', snapshot => { 
     if (!snapshot.exists()) { 
      return "no devices found"; 
     } 

     const devices = snapshot.val(); 

     const deviceTokens = []; 

     snapshot.forEach(deviceSnap => { 
      const device = deviceSnap.val(); 
      deviceTokens.push(device['fcm_key']); 
     }); 

     const removeFromQueue = database.ref(`/userPushMessagesQueue/${userId}/${messageId}`); 

     console.log('then0'); 

     return removeFromQueue.set(null).then(() => { 
      console.log('then1'); 
      return admin.messaging().sendToDevice(deviceTokens, payload).then(() => { 
       console.log('then2'); 
       return "send"; 
      }); 
     }, (error) => { 
      console.log('error1!'); 
      console.log(error); 
     }); 
    }); 
}); 

콘솔에 then1과 then2가 아닌 0이 기록됩니다. 그리고 푸시 알림을받는 동안 항목이 대기열에서 제거됩니다.

내가 잘못하고있는 것이 있습니까?

+1

오늘 이후 :

//returns the once promise return ref.once('value', function(snap) { /* some stuff that doesn't affect the promise chain happens here */ }); 

언제 무엇을 당신이 원하는 것은 이것이다 :

기본적으로이 서면으로 작성했습니다. 사용 가능한 수정 사항이 있습니까? –

답변

3

promise chain이 아닌 once() 함수가 반환됩니다. 내 중포 기지 클라우드 기능 비슷한 문제를 경험 한

// returns whatever happens in the .then() callback 
return ref.once('value').then(snap => { 
    /* now whatever you return here affects the promise chain */ 
}); 
관련 문제