我使用Firebase IOS SDK并设置安全性,让每条消息只能由其所有者读取/写入。要收听消息更改,我需要使用observeEventType:(FEventTypeChildChanged/FEventTypeChildAdded)
观察消息的消息密钥路径。
我在这里面临的问题是,每次远程更新/添加邮件时,Firebase都会为邮件的每个子项(属性名称和邮件)返回一个单独的快照。快照字典只包含一个具有相应值的子项。有没有办法让所有孩子都返回完整的信息,而不是让他们一个一个地归还?
-messages
--message_key_a
--name
--message
--message_key_b
--name
--message
--message_key_c
--name
--message
--users
--user_key_a
--name
--messages
--message_key_a
--message_key_c
答案 0 :(得分:1)
您可以通过以下方式收听value
事件:
ref observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot)
但是如果每条消息只能由其所有者读取,则听起来您的数据模型错误。为什么不在每个所有者的节点下为该所有者存储消息:
/messages_per_user
$uid
$messageid
name
message
通过这种方式,您可以在/messages_per_user/$uid
上提供读/写访问权限:
{
"rules": {
"messages_per_user": {
"$uid": {
".read": "auth.uid == $uid",
".write": "auth.uid == $uid"
}
}
}
}