Firebase函数由我的简单情况下的数据库更改触发

时间:2018-01-28 17:39:02

标签: firebase firebase-realtime-database firebase-authentication google-cloud-functions

在我的firebase数据库中,我有一个"用户"节点

我使用 Firebase功能作为后端功能。运行在函数中的我的javascript代码(node.js)需要在向数据库添加新的user时执行某些操作,这里是后端函数代码:

    // required modules
    const functions = require('firebase-functions');
    const admin = require('firebase-admin');

    // my backend function
    exports.onUserCreated = functions.auth.user().onCreate(event => {
      // Do something when a new user is created
    }

我成功将后端函数部署到firebase函数。

然后,我在firebase数据库的users节点下手动添加了一个用户。然后,我转到 Firebase函数,我看到控制台中列出了onUserCreated函数,但执行次数为0.

当我在数据库中手动添加用户时,我的功能未被触发的原因是什么?

2 个答案:

答案 0 :(得分:3)

您的功能是authentication trigger,而不是数据库触发器:

functions.auth.user().onCreate(...)

通过Firebase身份验证添加新用户时会触发,而不会在数据库发生更改时触发。

如果您想编写数据库触发器,请改为follow the instructions here

答案 1 :(得分:1)

发生的事情是您创建了一个triggered by Firebase Auth事件的功能。这意味着它只会在新用户注册使用您的应用程序时触发。不是在他写信给数据库的时候。

如果您希望在"用户"下创建新用户时触发它。节点,您应该使用Realtime Database trigger

exports.onUserCreated = functions.database.ref('/user/{userId}')
    .onWrite(event => {
      // Do something when a new user is created
    }

编辑:访问存储在数据库中的用户电子邮件:

exports.onUserCreated = functions.database.ref('/user/{userId}')
    .onWrite(event => {
      // Do something when a new user is created
      var email = event.data.val().email;
    }