swift - 从 Firebase 分支过滤项目 (SWIFT)
问题描述
应用程序中的当前用户在另一个用户的帖子(音频记录)上点击“赞”按钮,它会出现likes
在 Firebase 的分支中。还有另一个分支records
,其中存在来自每个用户的所有记录。
蓝色:当前用户 ID,绿色:另一个用户 ID,红色:记录 ID。
我需要在我的 ViewController 上显示只喜欢的记录(红线),但是使用我的代码,我已经从另一个用户那里获得了所有记录(绿线)。如何只显示喜欢的记录(红线)?
fileprivate func fetchRecordsWithUser(user: User2){
let ref = Database.database().reference().child("records").child(user.uid)
ref.observeSingleEvent(of: .value, with: { (snapshot) in
guard let dictionaries = snapshot.value as? [String: Any] else { return }
dictionaries.forEach({ (key, value) in
guard let dictionary = value as? [String: Any] else { return }
let record = Records(user: user, dictionary: dictionary)
self.records.append(record)
self.records.sort(by: { (p1, p2) -> Bool in
return p1.creationDate.compare(p2.creationDate) == .orderedDescending
})
self.tableView?.reloadData()
})
}) { (err) in
print ("Faild to fetch records:", err)
}
}
解决方案
我对这个问题有点不清楚,但让我试试看
让我们从问题中的结构开始,使用更简单的数据。
likes
uid_0
uid_1
record_0: true
uid_2
record_1: true
uid_1
uid_0
record_3: true
我相信对象是获取值record_0、record_1和record_3,所以这样做的代码是:
func printRecordIds() {
var recordIdArray = [String]()
let likesRef = self.ref.child("likes")
likesRef.observeSingleEvent(of: .value, with: { snapshot in
let allLikes = snapshot.children.allObjects as! [DataSnapshot]
for likeSnap in allLikes {
let uid = likeSnap.key
print(uid)
let uidLikes = likeSnap.children.allObjects as! [DataSnapshot]
for childLike in uidLikes {
let childUid = childLike.key
print(" child uid: \(childUid)")
let childRecords = childLike.children.allObjects as! [DataSnapshot]
for child in childRecords {
let recordId = child.key
print(" recordId: \(recordId)")
recordIdArray.append(recordId)
}
}
for r in recordIdArray {
print(r)
}
}
})
和输出
uid_0
child uid: uid_1
recordId: record_0
child uid: uid_2
recordId: record_1
record_0
record_1
uid_1
child uid: uid_0
recordId: record_3
record_0
record_1
record_3
因此,输出显示了我们正在每个节点读取的数据,因此您可以看到流程,然后是数组,其中填充了记录 id。
推荐阅读
- python - 在python中的图像中找到二维高斯
- clojure - 如何告诉伊斯特伍德忽略不推荐使用的命名空间
- python - 是熊猫错误还是我做错了什么?
- javascript - 检测输入字段中的错误信息
- python - Mavproxy + 任务规划器 + 无配套计算机的无人机套件
- python - 从 tfhub 加载模型时,如何“查看”模型/网络?
- python - Sklearn 决策树分类器 - 动物猜谜游戏
- python - 如何从 keras 模型制作 label.txt
- xml - 为什么我的 XSLT for-each 循环不起作用?
- javascript - Can't reproduce mi video with Javascript