检索好友列表信息的最佳实践。如何检测多个查询是否完成?
Best practice to retrieve list of friends information. How to detect multiple queries are finished?
我有这样的用户结构:
{
"users": {
"uniqueID1": {
"name": "Anon",
"friends": {
"uniqueID2": true,
"uniqueID3": true
}
}
"uniqueID2": { },
"uniqueID3": { },
}
}
我想显示用户朋友的名字。我必须访问 $user/friends/
以获取唯一 ID 列表,并迭代该列表以获取朋友的信息。但是迭代唯一 ID 会进行多次查询,我必须始终检查是否所有查询都已完成。根据文档,似乎多个查询不会对性能产生太大影响,但如果我只想在所有查询完成后更新我的视图,我必须检查完成了多少查询。
有没有办法'execute a completion block when all queries are finished'?
伪代码
var totalNumOfFriends = 0
var tempArray = NewArray()
ref(/users/uniqueID1/friends).observeEventType{ snapshot
var uIDList = snapshot.children's keys
totalNumOfFriends = uIDList .count
for uID in uIDList {
var nameRef = ref(/users/uID/name) i.e. /users/uniqueID3/name
nameRef.observeSingleEventOfType { snapshot
var username = snapshot.value
tempArray.append(username)
if tempArray.count == totalNumOfFriends {
// If counts are the same, tempArray has all of my friends' names
// Now update view using tempArray
}
}
}
}
伪代码解释:
从 /users/uniqueID1/friends
获取唯一 ID 列表
'Save' 个唯一 ID。 (在步骤 4 中解释)
对于列表中的每个唯一 ID,像这样使用 ref 获取用户名 /users/uniquedID2/name
对于每个检索到的名称,将其添加到临时数组中。一旦临时数组的计数等于第 2 步中的计数,更新我的视图,因为我已检索到所有名称。
Firebase 没有内置方式在多个查询完成时发出信号。但是您可以在自己的代码中轻松实现这一点。您使用计数器检查已经加载了多少项目的方法是最常见的方法。
我有这样的用户结构:
{
"users": {
"uniqueID1": {
"name": "Anon",
"friends": {
"uniqueID2": true,
"uniqueID3": true
}
}
"uniqueID2": { },
"uniqueID3": { },
}
}
我想显示用户朋友的名字。我必须访问 $user/friends/
以获取唯一 ID 列表,并迭代该列表以获取朋友的信息。但是迭代唯一 ID 会进行多次查询,我必须始终检查是否所有查询都已完成。根据文档,似乎多个查询不会对性能产生太大影响,但如果我只想在所有查询完成后更新我的视图,我必须检查完成了多少查询。
有没有办法'execute a completion block when all queries are finished'?
伪代码
var totalNumOfFriends = 0
var tempArray = NewArray()
ref(/users/uniqueID1/friends).observeEventType{ snapshot
var uIDList = snapshot.children's keys
totalNumOfFriends = uIDList .count
for uID in uIDList {
var nameRef = ref(/users/uID/name) i.e. /users/uniqueID3/name
nameRef.observeSingleEventOfType { snapshot
var username = snapshot.value
tempArray.append(username)
if tempArray.count == totalNumOfFriends {
// If counts are the same, tempArray has all of my friends' names
// Now update view using tempArray
}
}
}
}
伪代码解释:
从
/users/uniqueID1/friends
获取唯一 ID 列表
'Save' 个唯一 ID。 (在步骤 4 中解释)
对于列表中的每个唯一 ID,像这样使用 ref 获取用户名
/users/uniquedID2/name
对于每个检索到的名称,将其添加到临时数组中。一旦临时数组的计数等于第 2 步中的计数,更新我的视图,因为我已检索到所有名称。
Firebase 没有内置方式在多个查询完成时发出信号。但是您可以在自己的代码中轻松实现这一点。您使用计数器检查已经加载了多少项目的方法是最常见的方法。