У меня есть код для получения всех токенов пользователя и отправки уведомления всем парням, и у меня есть 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?