我试图从艺术家那里检索所有专辑,但我做不到。我在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
。在这个结构中,Artists
、Albums
和Songs
都是硬编码字符串,而其他字符串(前缀为$
(是动态的,由您的代码决定