当对查询应用限制时,查询中的第一个找到的元素将具有空的上一个兄弟。虽然它确实有一个兄弟,但它还没有在查询中获取。
FQuery* messageListQuery = [m_firebaseRef queryLimitedToNumberOfChildren:2];
[messageListQuery observeEventType:FEventTypeChildAdded andPreviousSiblingNameWithBlock:^(FDataSnapshot *snapshot, NSString *prevNodeName) {
NSString *nodeName = snapshot.name;
NSDictionary *msgData = snapshot.value;
NSString *where = (prevNodeName == nil) ? @"at the beginning" : [NSString stringWithFormat:@"after %@", prevNodeName];
NSLog(@"%@ says %@ %@", nodeName, msgData[@"text"], where);
}];
我在给定的FirebaseRef上有3条消息。但是,它显示测试2消息没有先前的兄弟:
-J1JTkEzsdxHGMBEk5eD says Test 2 at the beginning
-J1JW0vpWBZema9QKUcB says Test 3 after -J1JTkEzsdxHGMBEk5eD
当显示所有消息时,可以清楚地看到测试2作为前一个兄弟:
-J1JTWoAw5IiUpzkOV4l says Test at the beginning
-J1JTkEzsdxHGMBEk5eD says Test 2 after -J1JTWoAw5IiUpzkOV4l
-J1JW0vpWBZema9QKUcB says Test 3 after -J1JTkEzsdxHGMBEk5eD
我不确定这是一个错误还是由Firebase设计的。这看起来有点误导,因为人们想通过查看prevNodeName参数来了解是否有更多节点。