有人可以清楚地解释 FIRDataEventType 的 .Value、.ChildAdded、.ChildChanged、.ChildRemoved 之间的区别吗?

Can someone clearly explain difference between .Value, .ChildAdded, .ChildChanged, .ChildRemoved for FIRDataEventType?

我无法用语言表达。有人可以解释不同的 FIRDataEventType 之间的区别以及何时使用它的示例吗?

示例 (SWIFT):

let queryRef = FIRDatabase.database().reference().child("user")
queryRef.observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in

queryRef.observeEventType(.Value, withBlock: { (snapshot) -> Void in

根据测试,.Value returns 一个 object 而 .ChildAdded returns 多个;在进行高级查询时,.ChildAdded 不起作用,但 .Value 有点起作用(更深的 children 为空)。

tl;dr - Watch this video. It uses the old SDK in Android, but the idea is the exact same even for iOS.

这些事件中的每一个都是处理客户端间数据同步的特定方式。

Value 事件 将在每次更新任何数据时触发。这可能是新添加的键、键的删除或引用中任何值的更新。 当发生变化时,SDK 发回 object 的整个状态,而不是刚刚发生变化的增量。

Child 添加的事件 将针对每个现有数据触发一次,snapshot 值将是单个记录而不是整个列表就像您在 value 事件 中得到的一样。随着更多项目的加入,此事件将随每个项目一起触发。

Child 删除和更改的事件 工作几乎相同。当一个项目被删除或改变它的值时,回调中返回单个项目。