我无法用语言表达。有人可以解释不同FIRDataEventTypes之间的差异以及何时使用它们的例子?
示例(SWIFT):
let queryRef = FIRDatabase.database().reference().child("user")
queryRef.observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
或
queryRef.observeEventType(.Value, withBlock: { (snapshot) -> Void in
从测试开始,.Value返回一个对象,而.ChildAdded返回多个;在进行高级查询时.ChildAdded不起作用但.Value有些工作(更深的子节点为空)。
答案 0 :(得分:10)
这些事件中的每一个都是处理跨客户端数据同步的特定方式。
每次更新任何数据时,都会触发值事件。这可以是新添加的密钥,删除密钥或更新引用的任何值。 当更改发生时,SDK会发回对象的整个状态,而不是仅发生更改的delta。
儿童添加事件会在每个现有数据中触发一次,snapshot
值将是一个单独的记录,而不是像那样的整个列表价值事件。随着更多物品的进入,此事件将随每件物品开启。
删除并更改了子项的工作方式几乎相同。删除某个项目或更改其值时,将在回调中返回单个项目。