Firebase的云功能:如何以现有用户的身份读/写数据库?

时间:2017-05-31 10:18:47

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

我喜欢使用firebase函数来测试我定义的firebase规则。

我想以现有用户的身份读取/写入实时数据库,以测试规则是否按预期工作。

我在getting started page读到,我可以像管理员一样写入实时数据库,如下所示: admin.database().ref('/messages').push({original: 'some text'});

我怎么能像我在firebase中创建的用户那样做而不是管理员?

1 个答案:

答案 0 :(得分:2)

我相信当您从触发事件中获得 Delta Snapshot 时,该快照的当前状态与用户相关联。由于Firebase团队为您提供无服务器环境,因此它们也会附加管理员,因为它位于安全的位置。

因此,只需从当前快照中获取 ref ,就可以让您测试数据库规则。只是为了澄清,我说的是snapshot.ref,而不是snapshot.adminRef

以下是documentation的参考:

  

返回对发生触发写入的数据库位置的引用。此引用与执行写入的客户端具有相同的最终用户权限。因此,如果未经身份验证的客户端执行了写操作,则此参考未经身份验证。如果执行写入的客户端被认证为某个Firebase Auth用户,则此引用将作为同一用户进行身份验证。