从Firestore的文档中检索所有集合



我试图从艺术家那里检索所有专辑,但我做不到。我在Cloud Firestore中找到了一个结构:

艺术家->艺人名称->艺人名称专辑->歌曲。

我已经收到了专辑中所有的歌曲代码:

Future getDocId() async {
await FirebaseFirestore.instance.collection('artist').get().then(
(snapshot) => snapshot.docs.forEach((document) {
FirebaseFirestore.instance.collection("artist")
.doc("Artist1").collection("ArtistsAlbum").get().then((value){
value.docs.forEach((element) {
docIDs.add(element.id);
},
);
setState(() {});
});
}),
);

类似的代码

FirebaseFirestore.instance.collection('artist').doc("Rammstein").get();

不起作用。

有可能接收到这些数据吗?或者我需要重新设计我的结构,比如:Artist1>相册->歌曲Artist2->相册->歌曲

如果我理解正确的话,您使用了相册名称作为集合的名称,这并不好。无法从Firestore的客户端SDK获取某个路径上所有集合的列表,因此您应该只使用从其他地方可以知道的集合名称,例如硬编码的Artist名称,或者因为您将它们存储在其他地方。

所以你的主要选择是:

  • 还将专辑名称存储在艺术家的文档中,这样您就可以从那里读取它们,然后根据它们访问子集合
  • 使用带有硬编码集合名称的嵌套结构,如Artists>$artistName>Albums>$albumName>Songs>$songName。在这个结构中,ArtistsAlbumsSongs都是硬编码字符串,而其他字符串(前缀为$(是动态的,由您的代码决定

最新更新