Используйте Google Cloud Functions для удаления элемента из базы данных в реальном времени - PullRequest
0 голосов
/ 27 апреля 2020

У меня две коллекции, виноград и еда. Когда я удаляю виноград, я хочу найти все продукты, связанные с этим виноградом, а также удалить их и обновить количество пар. Ассоциация существует во вложенном массиве ключей с элементом питания.

Я использую базу данных Firebase Realtime с функциями Ioni c 5 и Google Cloud. У меня есть другие рабочие функции, поэтому я исключил проблемы с развертыванием и средой.

Структура данных выглядит следующим образом:

Example grape enter image description here

Моя облачная функция развертывается без ошибок, но, похоже, не срабатывает при удалении винограда с клиента. Виноград не удаляется ни из каких пар.

index. js

const functions = require('firebase-functions');
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);

// Other working functions

exports.deleteGrapePairings = functions.database.ref('grapes/{grapeid}').onDelete(async (snap) => {
    const grpRef = snap.ref;
    const collectionRef = functions.database.ref('grapes/' + grpRef + '/pairings');
    return collectionRef.once('value', function(snapshot){
        snapshot.forEach(function(childSnapshot){
            const key = childSnapshot.key;
            functions.database.ref('pairings/' + key + '/grapes/' + grpRef).remove();
            resetPairingCount(key);
        });
    });
});

function resetPairingCount(key){
    const counterRef = functions.database.ref('/pairings/' + key + '/pairingcount');
    const collectionRef = functions.database.ref('/pairings/' + key + '/grapes');

    const messagesData = collectionRef.once('value');
    return counterRef.set(messagesData.numChildren());
}

Как я могу удалить виноград из связанных пар и обновить счетчик пар, используя облачную функцию?

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