Логи выводят различные значения локально VS Prod (сервер) с использованием облачных функций Firebase - PullRequest
0 голосов
/ 05 января 2019

У меня есть следующие 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 и локально получает фактическое значение?

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