在这样的Firebase结构中:
Pictures
-pictureID
-- name
-- date
Like
-pictureID
-- userID: true
-- userID: true
likePerUser
-userID
--pictureID: true
--pictureID: true
Users
-userID
-- name
-- lastname
我已经实现了一个用户可以喜欢图像的类似系统。 (swift3)
我可以通过这样做来获得喜欢特定图片的用户数量:
ref.child("Like").child(pictureID!).observeSingleEvent(of: .value, with: { (snapshot) in
print(snapshot.childrenCount)
})
我怎样才能找到用户(我知道他的用户ID)是否喜欢图片(我也知道它的图片ID)?
所以我编辑结构和代码,现在我需要检查是否在likeperuser节点下,在子currentUser下是否有一个pictureId等于true 但是这段代码不起作用......
ref.child("likePerUser").child(FIRAuth.auth()!.currentUser!.uid).queryOrdered(byChild: pictureId).queryEqual(toValue: true).observe(FIRDataEventType.value, with:{(snap)in
答案 0 :(得分:1)
在NoSQL中,您经常会根据应用所需的用例对数据进行建模。因此,如果您的应用程序有一个用例,您想知道用户喜欢哪些图片,请存储每个用户喜欢的图片列表:
LikesPerUser
- userID
-- pictureID: true
-- pictureID: true
使用这个(附加)结构,查找喜欢用户的内容就像在当前结构中查找喜欢的图片一样简单。
有关此主题的详细介绍,请阅读NoSQL data modeling并观看Firebase for SQL developers。