слишком рано получить таймаут - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть код для получения всех токенов пользователя и отправки уведомления всем парням, и у меня есть firebase blaze, и мой лимит по таймауту составляет 540 секунд, это мой код:

function listAll(){
  return new Promise((resolve) => { 
  usersRef.once('value', (snapShot) => {
  let valor = [];
  for( let key in snapShot){
    valor.push(key); //Becuase in my ref, key its the uid!
  }
  resolve({valor})
})
})
}


exports.updateNotification = functions.database.ref('userNotification/{push_Id}').onCreate(event =>{ 
let original = event.val();
let titulo = original.titulo;
let body = original.body;

let pushId = event.params.push_Id;
listAll().then((res) => {
let valor = (res.valor);
let valorDiv = valor.length / 10;
return admin.database().ref('user_notification/${pushId}').update({
  title: titulo,
  body: body,
  vezes: 10,
  valorDividido: valorDiv,
})

})

})

exports.sendNotification= functions.database.ref('userNotification/{push_Id}').onUpdate(event = {
let original = event.val();
let vezes = original.vezes;
let titulo = origina.title;
let body = original.body;
let pushId = event.params.push_Id;  
let valorDividido = original.valorDividido;
if(vezes < 0){
 return sendNotToAll(vezes,titulo,body,valorDividido);
}
})

function sendNotToAll(vezes,titulo,body,valorDividido,pushId){
 listAll().then((res) => {
 let allUserUid = (res.valor);
 let mult = vezes - 10;
 let array = AllUserUid.splice(valorDividido * mult, valorDividio); //for get to 0 to valorDivido or more if its not the first time.
 array.forEarch(element =>{
 admin.ref('users/' + element).child('token').once('value', (snapShot) => {
if(snapShot.val()){
  let token = snapShot.val();
  let body //messagem
  let etc .... // 
  return admin.messaging().sendToDevice(token, body, option);
} 
}) 
})
 //HERE I CAN UPDATE AGAIN FROM CALL THE FUNCTION AGAIN
 return admin.database().ref('userNotification/' + pushId).update({
  title: titulo,
  body: body,
  vezes: 10 - 1,
  valorDividido: valorDiv,
})
})
}

Я делаю всеЭтот код, потому что его много пользователей, и из-за этого мне нужно 10 раз перкорации всех пользователей, но по причине в третий раз он запускает этот массив, например, 3 минуты, он получает время !!!, кто-то может мне помочь, сказатьмне, если это проблема с моим кодом, или что-то мне нужно говорить с Firebase?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...