Cloud Functions for Firebase - 即使管理员已初始化,权限也被拒绝

Cloud Functions for Firebase - Getting permission denied even with admin initialized

我使用 firebase-admin 设置我的云函数,例如:

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

admin.initializeApp(fn.config().firebase);

但是,我在写入数据库时​​获得的权限被拒绝。奇怪的是,它只发生在某些集合中,而不是所有集合中。有些有效,有些则无效。

我对admin.initializeApp(fn.config().firebase);的理解是,无论security rules

,这将使我的云功能对数据库拥有绝对的权力。

这是错误:

编辑

我是这样写数据的。

exports.foo = fn.database.ref('some-path').onWrite(e => {
    // some handling
    const ref = e.data.ref;

    return ref.child('bar').set('some-data').then( // ).catch( // );
})

要从 DeltaSnapshot provided in an event, use adminRef 获得对数据库的完全访问权限:

Returns a Reference to the Database location where the triggering write occurred. Similar to ref, but with full read and write access instead of end-user access

exports.foo = fn.database.ref('some-path').onWrite(e => {
    // some handling
    const ref = e.data.adminRef;  // <== CHANGED

    return ref.child('bar').set('some-data').then( // ).catch( // );
})