我喜欢使用firebase函数来测试我定义的firebase规则。
我想以现有用户的身份读取/写入实时数据库,以测试规则是否按预期工作。
我在getting started page读到,我可以像管理员一样写入实时数据库,如下所示:
admin.database().ref('/messages').push({original: 'some text'});
我怎么能像我在firebase中创建的用户那样做而不是管理员?
答案 0 :(得分:2)
我相信当您从触发事件中获得 Delta Snapshot 时,该快照的当前状态与用户相关联。由于Firebase团队为您提供无服务器环境,因此它们也会附加管理员,因为它位于安全的位置。
因此,只需从当前快照中获取 ref ,就可以让您测试数据库规则。只是为了澄清,我说的是snapshot.ref
,而不是snapshot.adminRef
。
以下是documentation的参考:
返回对发生触发写入的数据库位置的引用。此引用与执行写入的客户端具有相同的最终用户权限。因此,如果未经身份验证的客户端执行了写操作,则此参考未经身份验证。如果执行写入的客户端被认证为某个Firebase Auth用户,则此引用将作为同一用户进行身份验证。