Тестирование облачных функций - локальный вызов базы данных в режиме реального времени из терминала для не единичных данных - PullRequest
0 голосов
/ 07 января 2019

У меня есть узел в моей базе данных в реальном времени, который имеет следующую структуру:

enter image description here

В моем файле машинописи (с использованием кода VS) у меня есть функция, которая запускается при удалении одного из дочерних элементов из узла users и подсчитывает количество дочерних элементов, оставшихся после удаления:

const admin = require('firebase-admin');
const functions = require('firebase-functions');

try {admin.initializeApp(functions.config().firebase);} catch(e) {console.log(e);}

// MIN AMOUNT OF USERS
const MIN_USERS_COUNT = 2;

// Callback triggered when event in users node is deleted from the realtime database
exports = module.exports = functions.database.ref('users').onDelete((change, context) => {
    console.log(`number of children is ${change.numChildren()}`)
    if (change.numChildren() >= MIN_USERS_COUNT) {
        // DO some work ... 
    } 
})

Если я разверну свою функцию на сервере, а затем удаляю пользователя из узла users из базы данных в реальном времени, функция будет запущена правильно, и я смогу увидеть выходные данные журналов на моей панели Firebase.

Журналы, показывающие: количество детей 5 (например).

Проблема с тестом, приведенным выше, заключается в том, что мне нужно развернуть на prod, а затем вручную удалить узел (это отнимает много времени).

Я думал сделать то же самое, но делать это локально, чтобы иногда себя спасти.

Итак, как я могу эмулировать запуск события моей функции на терминале firebase functions:shell перед его развертыванием, если я пытаюсь использовать что-то вроде myDatabaseFunction ?

Пока я пробовал это, но это не сработало:

myDatabaseFunction('DwpA5K4XM4ZjdYGaXUOLHEhC3Kr2, ET4q5SX0WccCESNaU61djdqnt0i1, StUsv09jDbXOCVCaCSstq7RtQbq2', {params: {group: 'a', id: 123}})

Я смотрю в этот блог и документацию , но я не смог найти то, что я пытаюсь сделать.

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