Firebase onCreate触发器:除UNAUTHENTICATED

时间:2018-07-27 21:26:23

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

使用具有以下规则的Firebase实时数据库:

{
    "rules": {
        "messages": {
            ".read": "auth != null",
            ".write": "auth != null"
        }
    }
}

而且,将此触发器定义为:

exports.localOnCreate = functions.database.ref('/messages/{messageId}')
    .onCreate((snap, context) => {
        console.log(context);
    });

当我在测试网站(通过Google验证)上运行此代码时:

firebase.database().ref('/messages').push().set({
    'hi': 'from-web'
}).then( function(result) {
    console.log(result);
    ...
})

我在Firebase控制台功能日志中看到了这一点:

{
    eventId: '............',
    timestamp: '2018-07-27T20:51:50.943Z',
    eventType: 'google.firebase.database.ref.create',
    resource: {
        service: 'firebaseio.com',
        name: 'projects/_/instances/..../refs/messages/-LISVklGLfbcfrFvnylZ'
    },
    authType: 'UNAUTHENTICATED',
    auth: null,
    params: {
        messageId: '-LISVklGLfbcfrFvnylZ'
    }
}

如果我已在Web应用程序中通过身份验证,为什么在触发器“上下文”(第二个)参数中得到 authType:'UNAUTHENTICATED' auth:null

而且,正如我在CloudFunction reference中看到的那样,此函数应该只接收一个参数,即Event对象,但是似乎不是Realtime Database triggers中所见的情况,也不是根据我的测试。最后的冲突使我完全困惑。任何澄清将不胜感激。

1 个答案:

答案 0 :(得分:0)

嘿,@ RodrigoMata和@claytronicon,这是一个错误。我创建了一个github问题,他们推出了新版本v2.0.4,其中包含RTDB事件中authType的修复程序。 IntelliJ Code Coverage docs