Firebase LIKE按钮和计数器

时间:2017-04-01 12:27:41

标签: swift firebase firebase-realtime-database

在这样的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!.u‌​‌​id).queryOrdered(b‌​yC‌​hild: pictureId).queryEqual(toValue: true).observe(FIRDataEventType.value, with:{(snap)in 

1 个答案:

答案 0 :(得分:1)

在NoSQL中,您经常会根据应用所需的用例对数据进行建模。因此,如果您的应用程序有一个用例,您想知道用户喜欢哪些图片,请存储每个用户喜欢的图片列表:

LikesPerUser
- userID
-- pictureID: true
-- pictureID: true

使用这个(附加)结构,查找喜欢用户的内容就像在当前结构中查找喜欢的图片一样简单。

有关此主题的详细介绍,请阅读NoSQL data modeling并观看Firebase for SQL developers