0

当限制应用于查询时,查询中第一个找到的元素将有一个 null 先前的兄弟。即使它确实有兄弟姐妹,它只是没有在查询中获取。

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 条消息。但是,它表明 Test 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 参数来知道是否有更多节点。

4

0 回答 0