首页 > 解决方案 > 写入数据库时​​未触发 Firebase 功能

问题描述

我的数据库结构如下 Collection("Message").Document("message")

但实际上,我希望在添加文档时监控数据库主集合中的任何更改。我添加了消息文档,因为我认为可能没有调用该函数,因为我的文档是自动生成的。然而,问题依然存在……

仅作为背景,我是一名 iOS 开发人员,所以也许我在这里做错了什么:

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

admin.initializeApp();

exports.sendPushNotifications = functions.database.ref('/Messages/{message}').onCreate((snapshot,context) => {

    console.log(snapshot);
    console.log(context);

    var topic = "/topics/sentMessages";

    var payload = {
        data: {
            message : 'You recieved a new message!'
        }
    }

    return  admin.messaging().sendToTopic(topic,payload).then((response) => {

        return response;
    })
})

对于其他背景:应用程序在使用控制台时可以很好地接收推送通知,无论是直接发送到测试设备还是使用主题。这个问题严格来说是在写入firebase Firestore时......

标签: javascriptnode.jsfirebasegoogle-cloud-functions

解决方案


当您说“Collection("Message").Document("message")”时,向我表明您正在使用 Firestore 作为数据库。但是,您的功能是针对实时数据库的更改,这是完全不同的事情。 functions.database为实时数据库构建功能。 functions.firestore为 Firestore 构建函数。您将需要阅读有关 Firetore 触发器的文档以了解如何编写它们。


推荐阅读