gpt4 book ai didi

Firebase Firestore 嵌套查询

转载 作者:行者123 更新时间:2023-12-05 03:58:27 26 4
gpt4 key购买 nike

我有一个像这样的 Firestore 数据库结构:

Songs:
- song1
- artistName
- songCover
- song2
- song3

我希望能够抓取所有喜欢特定歌曲的用户

以前我做过这样的结构

FavoriteSongs
- IDSong1
- userID1 (with favorited the song)
- artistName
- songCover
- userID2
Songs:
- song1
- artistName
- songCover

在前面的结构中,我在用户的 id 节点中制作了每首歌曲的精确副本。然而,当一首歌曲改变其封面时,这迫使我更改 FavoriteSongs 中的每个文档,其中更改的歌曲的 ID 与 FavoriteSongs 的 IDSong 键匹配。

阅读有关集合组查询的信息,我认为我可以这样做:

Songs:
- song1
- artistName
- songCover

-> Favorited (Subcollection):
- userID1

- song2
- song3

这样我就可以检索特定用户收藏的所有歌曲,并且我可以获得具有所有更新值的歌曲,因为更改歌曲的封面只会影响一个文档。

这是否可能,如果可能,我该如何编写查询?

最佳答案

如果您想编写一个集合组查询,在子集合(名为“favorited”)中查找某些文档属性(也称为“favorited”)为真的文档:

firestore.collectionGroup("favorited").where("favorited", "==", true)

每个用户都需要能够使用与其 UID 相同的 ID 在子集合中编写自己的文档,以便设置此 bool 属性。因此,要标记收藏夹,用户会:

firestore
.collection("songs")
.doc(songId)
.collection("favorited")
.doc(userId)
.set({ favorited: true })

关于Firebase Firestore 嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57958120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com