Я пытаюсь сделать две вещи здесь.
1) Отправьте уведомление всем сотрудникам. 2) Скопировать конкретную ссылку в
ID сотрудника исх. если не существует специальных ссылок, я скопирую общие ссылки
Программа работает без ошибок. Infact его идеально. Но иногда я получаю сообщение об ошибке тайм-аута с частью кода уведомлений.
Ошибка: тайм-аут сети fcm.googleapis.com. Пожалуйста, попробуйте еще раз.
Код, который копирует одну ссылку на другую, всегда работает, никогда не получал там ошибки.
Я чувствую, что ошибка связана с неправильной обработкой обещаний с forEach. Не могли бы вы помочь мне безошибочно выполнить этот код, правильно разместив Обещания?
exports.myFunc = functions.https.onRequest( (request, response) => {
admin.database().ref('/Employees').once('value').then(function(snap) {
snap.forEach(function (snapshot) {
var obj = snapshot.val();
if(obj.department){//only go ahead if dept is present
console.log(' : ' + obj.department);
var id, tkid, dept;
id = obj.empId; tkid = obj.tokenId; dept = obj.department;
var welcomeStr="hello! Welcom to our Department";
//================================================================notifications
var payload = {
data: {
greeting: welcomeStr,
to_who: id
}
};
admin.messaging().sendToDevice(tkid,payload)
.then(function(response){
console.log("Successfully sent message: ", response);
})
.catch(function(error){
console.log("Error sending message: ", error);
})
//===================================================Ref copying
var destinationRef = admin.database().ref('/Employees/' + id);//final destination
var option2Ref = admin.database().ref('/Company/General');//when special doesnt exist
var option1Ref = admin.database().ref('/Company/Special');//if special exists
option1.once('value', function(snapshot1){
if (snapshot1.exists()){//copy from straing from option11 to Employees/id
option1.once('value', function(snap) {
destinationRef.set( snap.val(), function(error) {
if( error && typeof(console) !== 'undefined' && console.error ) { console.error(error); }
console.log('DONE .... ' + id);
});
});
}
else{//we need to copy from option2 to Employees/id
option2Ref.once('value', function(snap) {
newRef.set( snap.val(), function(error) {
if( error && typeof(console) !== 'undefined' && console.error ) { console.error(error); }
console.log('DONE .... ' + id);
});
});
}
});
}
else{
console.log('No Department: ' + obj.dept);
return;
}
});
});
response.send("WOKAY!");
});