Незадолго до Google I/O я попробовал Firebase Cloud Functions в мессенжере-Вселенной Ты космос. И обнаружил, что не чётко работает подписка на событие добавления в базу данных.
Вот так оно было объявлено:
exports.sendFollowerNotification = functions.database.ref('/{galaxyUid}/messages').onWrite(event => { ... });
Казалось бы, когда добавляется новое сообщение в /{galaxyUid}/messages как дочерний узел, событие должно сработать. Например, при появлении:
https://saturn-6b9e1.firebaseio.com/4ee9bf31-4a5c-4a83-94c7-99a9f48aee38/messages/-KkidPlqZ5WsiDN9mb_c
будет вызвана наша функция.
Однако, когда в messages уже очень много дочерних узлов, событие просто не вызывается и в логах отсутствует какая-либо информация, объясняющая эту ситуацию. Я думаю, что есть какое-то превышение квоты бесплатного тарифного плана.
Как быть?
Нашёл решение. Надо подписываться на более мелкий узел. Получается:
exports.sendFollowerNotification = functions.database.ref('/{galaxyUid}/messages/{planetUid}').onWrite(event => { ... });
Это работает, и дополнительно даёт информацию о планете, которая была добавлена в галактику.