У меня есть следующие onDelete
Облачные функции на моем сервере js узла:
export {};
const admin = require('firebase-admin');
const functions = require('firebase-functions');
try {admin.initializeApp(functions.config().firebase);} catch(e) {console.log(e);}
// MIN AMOUNT OF NAMES BEFORE SENDING A NOTIFICATION
const MIN_USERS_COUNT = 2;
// Callback triggered when event is deleted from the realtime database
exports = module.exports = functions.database.ref('store/{storeId}/storeName').onDelete((change, context) => {
const storeName = change.val();
console.log(`The store name is ${storeName}`);
const storeId = change.ref.parent.key;
console.log(`Store id is ${storeId}`);
return getStoreOwner(storeName, storeId);
});
function getStoreOwner(storeName, storeId) {
return admin.database().ref(`owners/{storeName}/ownerNames`).once("value").then(function(userSnapShot) {
// The Promise was "fufilled"
console.log(`number of names are ${userSnapShot.numChildren()}`)
if (userSnapShot.numChildren() >= MIN_USERS_COUNT) {
//Do something ...
return true;
} else {
console.log('No names screen will be prompted if there are only 2 names');
return null;
}
},
// The Promise was rejected.
function(errorObject) {
console.log("The read failed: " + errorObject.code);
});
}
После выполнения команды: firebase functions:shell
Я локально запустил следующую функцию:
dbNotificationsOnDelete('CoffeeIsLife', {params: {storeId: '01129434'}});
И я получаю результаты, которые я ищу до выхода:
Логи:
информация: Пользовательская функция сработала, начало выполнения
информация: Магазин называется CoffeeIsLife
информация: идентификатор магазина 01129434
информация: количество имен 2
Однако, когда я запустил его на prod, вывод был другим: (я запустил его, вручную удалив узел из базы данных Firebase Realtime).
Логи:
информация: Пользовательская функция сработала, начало выполнения
информация: Магазин называется CoffeeIsLife
информация: Идентификатор магазина 01129434
информация: количество имен 0
ПРОБЛЕМА: Количество имен отличается Местно VS Прод. Не может ли быть так, что удаление в prod происходит до того, как функция получает число дочерних элементов, поэтому она возвращает 0 в prod и локально получает фактическое значение?