我希望能够收听Firebase数据库中任何子项所做的任何更改。我执行以下操作(在viewDidLoad中),它向我发送整个数据库,而不是仅向我发送已更改的子节点。
var ref : FIRDatabaseReference!
self.ref.observe(.childChanged, with: {(snapshot) in
print(snapshot)
})
积极的是,每次更改数据库值时都会调用它。但负面的是,它不是仅发送受影响的节点,而是返回所有具有更新节点的节点,这不是我想要的。 我是在呼唤正确的倾听者,还是这是出乎意料的行为?
答案 0 :(得分:1)
这是预期的行为:如果在特定节点上注册值观察器,则只要有更改,就会使用该节点的值触发该块。
如果您想要了解JSON树中较低级别的更改,则应在树中添加该级别的观察者。
答案 1 :(得分:0)
这对我有用(目标C)[[FIRDatabase database] referenceWithPath:@"/chat_server"];
self.refGrito = [[FIRDatabase database] referenceWithPath:@"/chat_server"];
[self.refGrito
observeEventType:FIRDataEventTypeChildChanged
withBlock:^(FIRDataSnapshot *snapshot) {
NSLog(@"EVENT CHILD CHANGED FOR GRITO : %@ : %@",[snapshot key], snapshot.value);
[self configureFirebaseProfile:snapshot];
}];