我以爲我讀到您可以使用新的Firebase Firestore查詢子集合,但我沒有看到任何示例。例如,我有下列方式我公司的FireStore設置:Firestore查詢子集合
- 舞蹈[收藏]
- danceName
- 歌曲[收藏]
- SONGNAME
我將如何查詢「查找所有歌曲名稱=='X'」
我以爲我讀到您可以使用新的Firebase Firestore查詢子集合,但我沒有看到任何示例。例如,我有下列方式我公司的FireStore設置:Firestore查詢子集合
我將如何查詢「查找所有歌曲名稱=='X'」
這是一項尚不存在的功能。它被稱爲「收藏組查詢」,並且可以讓您查詢所有歌曲,而不管哪首歌曲包含它們。這是我們打算支持的東西,但沒有具體的時間表。
此時的替代結構是使歌曲成爲頂級集合,並使得歌曲跳舞是歌曲屬性的一部分。
@ Nelson.b.austin由於公司的FireStore不會有呢,我建議你有一個平坦的結構,意思是:
Dances = {
danceName: 'Dance name 1',
songName_Title1: true,
songName_Title2: true,
songName_Title3: false
}
有它以這種方式,你可以把它做:
var songTitle = 'Title1';
var dances = db.collection("Dances");
var query = dances.where("songName_"+songTitle, "==", true);
我希望這有助於。
如果您將歌曲存儲爲對象而不是集合,該怎麼辦?每個起舞,用歌聲爲現場:Object類型(不是集合)
{
danceName: "My Dance",
songs: {
"aNameOfASong": true,
"aNameOfAnotherSong": true,
}
}
,那麼你可以用aNameOfASong所有舞蹈查詢:
db.collection('Dances')
.where('songs.aNameOfASong', '==', true)
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.id, " => ", doc.data());
});
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});
該解決方案可以工作,但在歌曲數量很大或可以動態增長的情況下不可擴展。這會增加文檔大小並影響讀/寫性能。有關詳情,請參閱以下鏈接的Firebase文檔(請參閱頁面上的「限制」部分)https://firebase.google.com/docs/firestore/solutions/array –
你會使用從歌曲引用舞firestore參考?你可以通過這些參考查詢嗎? –
您是否使用Firestore參考取決於您。你可以查詢他們。 如果您只想使用參考來查找舞蹈,那麼參考就足夠了。如果你想能夠在一首歌中展示一些關於舞蹈的東西而不用查看舞蹈,那麼我就不會使用參考。儘管如此,這是經典的nosql非規範化問題。 –
所以我的問題是我想通過歌名和歌名來查詢。一首單曲可以有多首歌曲與之相關聯。更進一步,我需要能夠評價舞蹈,以及與舞蹈相關的歌曲。例如:歌曲A和歌曲B去舞蹈A.舞蹈A很有趣,5星級 - 但是歌曲A並不適合(投票),但是歌曲B(投票)。所以我一定會利用Firebase函數跟蹤兩者的平均評分。但我仍然需要能夠查詢WHERE songName ='X'以及WHERE danceName ='Y'。 Firestore將來能夠支持這一點嗎? –