获取或设置数据库规则中要使用的Firebase uid的云函数

获取或设置数据库规则中要使用的Firebase uid的云函数,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,根据,为了为数据库规则设置用户uid和其他身份验证信息,您的函数应如下所示: var functions = require('firebase-functions'); var admin = require('firebase-admin'); exports.foo = functions.database.ref('/bar') .onWrite(event => { var firebaseConfig = functions.config().firebase;

根据,为了为数据库规则设置用户uid和其他身份验证信息,您的函数应如下所示:

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

exports.foo = functions.database.ref('/bar')
    .onWrite(event => {
  var firebaseConfig = functions.config().firebase;
  firebaseConfig.databaseAuthVariableOverride = {
    uid: 'some-uid',
    foo: true,
    bar: false
  };
  admin.initializeApp(firebaseConfig);
  ...
}
但当我们在函数中运行此代码时,会出现以下错误:

The default Firebase app already exists. This means you called initializeApp() more than once without providing an app name as the second argument. In most cases you only need to call initializeApp() once. But if you do want to initialize multiple apps, pass a second argument to initializeApp() to give each app a unique name.
那么,这段代码有什么错呢?这是设置uid的正确方法吗?或者是否有一个(未)文档化的函数uid或另一种方法来设置只允许从云函数写入的规则

更新-已解决


我们解决了这个问题,问题是参考答案是(我猜)谷歌云函数,我们正在为Firebase编写一个云函数

在Firebase的云函数中,
event.data
是一个DeltaSnapshot对象,它具有
ref
adminRef
属性
ref
与触发事件的用户具有相同的访问权限,而
adminRef
具有不受限制的读/写权限。因此,为了只允许函数写入路径,必须在规则中拒绝写入操作,并且函数必须使用
adminRef
进行写入

多亏了这个答案,这个问题才得以解决
给出了for and.

我们解决了这个问题,问题是参考答案是(我猜)谷歌云函数,我们正在编写Firebase函数

在Firebase函数中,
event.data
是具有
ref
adminRef
属性的DeltaSnapshot对象
ref
与触发事件的用户具有相同的访问权限,而
adminRef
具有不受限制的读/写权限。因此,为了只允许函数写入路径,必须在规则中拒绝写入操作,并且函数必须使用
adminRef
进行写入

多亏了这个答案,这个问题才得以解决 给予和