我使用Firebase进行聊天。
我希望从特定时间获取所有消息。 但我只从Firebase收到一条消息。
这是我的代码:
[[[_conversationDBRef queryOrderedByChild:@"time"] queryStartingAtValue:@(time)] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
for (FIRDataSnapshot* child in snapshot.children) {
NSDictionary* msgData = child.value;
NSLog(@"msgData: %@", msgData);
}
}];
查询:
(lldb) po _conversationDBRef
https://xxxxx-xxxxxx.firebaseio.com/Strike-Fighter/messages/4_5
(lldb) po [[_conversationDBRef queryOrderedByChild:@"time"] queryStartingAtValue:@(time)]
(/Strike-Fighter/messages/4_5 {
i = time;
sp = "548914514.2122542";
})
答案 0 :(得分:0)
由于您正在使用queryStartingAtValue
进行查询,因此您只收到一个值。如果你想从约会收到你聊天的所有信息。您需要使用isGreaterThan
。
因此,如果您想从特定日期检索消息,则需要执行以下操作:
<强>公司的FireStore 强>
[[[_conversationDBRef queryWhereField:@"time" isGreaterThan:@100000]
queryOrderedByField:@"time"];
Firebase实时数据库
[[[_conversationDBRef queryWhereField:@"time" queryStartingAtValue:@100000]
queryOrderedByChild:@"time"];
您还可以限制要检索的邮件数量(例如,集成延迟加载),将queryLimitedTo
添加到您的查询中。
我认为你的代码还可以。尝试使用queryOrderedByValue
并查看https://firebase.google.com/docs/database/ios/lists-of-data
无论如何,如果您的申请正在启动。我建议您将数据库更新到Firebase Firestore。它更易于使用,更具可扩展性,并且看起来Firebase团队将比REaltime更专注于它。
希望它能帮到你!