我已经创建了一个用于创建/更新/删除用户聊天消息的工作方法。我在想有没有办法减少我的逻辑。
".write": "(!data.exists() && newData.child('uid').val() == auth.uid) || (data.child('uid').val() == auth.uid && newData.child('uid').val() == auth.uid) || (data.child('uid').val() == auth.uid && !newData.exists())"
多行可读性
(!data.exists() && newData.child('uid').val() == auth.uid) ||
(data.child('uid').val() == auth.uid && newData.child('uid').val() == auth.uid) ||
(data.child('uid').val() == auth.uid && !newData.exists())
查看螺栓
。https://github.com/firebase/bolt
您可以简化查询,然后编译输出。
path /somePath {
path /{uid} {
read() { isUser(uid) }
write() { isUser(uid) }
}
}
function isUser(uid) {
return auth != null && auth.uid == uid;
}
它真的很方便——尽管仍处于测试阶段,但它使规则更容易阅读和理解。
我在我的react本地应用程序中使用Firebase实时数据库。大多数事情都是通过REST API云函数来完成的。app中很少东西直接使用实时数据库。最近,我发现我数据库中的所有数据都被莫名其妙地删除了。甚至数据库中不再使用且未在我的应用程序/云功能的源代码中引用的部分也消失了。 问题发生在两个项目及其数据库(生产/测试)中。我必须使用备份来恢复它们,但即使没有人使用应用程序(例如,在测试环境中)
我以为上面的办法行得通,但它失败了。我把它放在渲染行部分。它出现了reference.remove失败。第一个参数必须是有效的函数。就像在这些房间里,它有信息,我认为这是我出错的地方,但我不知道如何去做它。谢谢。
我尝试用规则返回用户聊天列表。所以我不知道对话的id。我尝试了几种方法,但都不起作用,因为你必须知道聊天id。 数据库: 规则: 但当我从react本机应用程序访问时。通过身份验证的用户无法访问聊天记录(uid:3Oi1atf8l2P4Vgsb8tZOGxpUg7q2) *读取失败:错误:权限被拒绝/Chats:客户端没有访问所需数据的权限。 规则: 查询:
我使用以下规则检查只有“管理员”才能写入陷阱部分。 这个很好用。但是如果我把规则改为, 然后我得到了一个权限错误。W/SyncTree:侦听/traps失败:数据库错误:权限被拒绝。 我之所以改变结构,是因为我试图使用validate函数,但由于我无法通过第一个问题,我无法达到验证的程度。 我肯定这是一个新手理解错误,但在尝试了许多排列后,我在这方面进展甚微。您的协助将不胜感激。 更新201606
下载url来自一个单独的图像选择方法,顺便说一句。我的用户创建代码是这样的。
我有一个数据库: 当用户()在应用程序中注册时,他会填充另一个用户uid(该用户uid具有属性)并将自己的uid添加到他的个人资料中(